【PHP】下らねぇ質問はID出して書き込みやがれ 81
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/02/18(水) 21:09:16ID:xNLzAD7T過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 80
http://pc11.2ch.net/test/read.cgi/php/1233479457/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
0513nobodyさん
2009/02/26(木) 16:18:30ID:???0514nobodyさん
2009/02/26(木) 16:21:51ID:???switch ($n) {
case 1 : return false;
case 2 : return array(0, 1);
case 3 : return array(1, 0);
case 4 : return array(0, 2);
case 5 : return array(1, 1);
case 6 : return array(2, 0);
case 7 : return array(2, 1);
・・・略
}
}
0515nobodyさん
2009/02/26(木) 16:32:40ID:???print_r(getGroup($n));
function getGroup($n) {$a=floor($n/3);$b=fmod($n,3);switch ($b) {case 0:return array('3'=>$a,'2'=>0);break;case 1:return array('3'=>$a-1,'2'=>2);break;case 2:return array('3'=>$a,'2'=>1);break;}}
0516nobodyさん
2009/02/26(木) 16:33:56ID:???0517nobodyさん
2009/02/26(木) 16:35:59ID:???あとは好きにしろ
0519nobodyさん
2009/02/26(木) 16:44:24ID:???ループ処理内にreturnもなんか違和感を感じる
0521nobodyさん
2009/02/26(木) 16:53:00ID:???ttp://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla%3Aja%3Aofficial&hs=9eG&q=return+switch+%E6%B0%97%E6%8C%81%E3%81%A1%E6%82%AA%E3%81%84&btnG=%E6%A4%9C%E7%B4%A2&lr=lang_ja
0522nobodyさん
2009/02/26(木) 16:59:46ID:???0523nobodyさん
2009/02/26(木) 17:02:39ID:???0525nobodyさん
2009/02/26(木) 17:14:45ID:???もしかして、まじでオレだったりしてな。
0526nobodyさん
2009/02/26(木) 17:21:44ID:???それは、そういう奴をさっさと見抜いてクビにできなかった上司の責任。
ふつうに考えればよいコードを書く方がクビになりにくいのは自明だから、
それができなくて辞めた奴を憎んでもしょうがないべ
逆に、良いコード書いても評価されないならとっとと辞めたほうがよさげ
0527nobodyさん
2009/02/26(木) 17:24:01ID:???0528nobodyさん
2009/02/26(木) 17:29:28ID:???$fp=fopen($filename1,"a");
flock($fp,LOCK_EX);
fwrite($fp,$str)
fclose($fp);
$fp=fopen($filename2,"w");
flock($fp,LOCK_EX);
fwrite($fp,$str)
fclose($fp);
0531nobodyさん
2009/02/26(木) 17:33:13ID:???雑談でネタ振りしてろカス
0532nobodyさん
2009/02/26(木) 17:38:21ID:???function ahoaho( $filename, $filemode, $str ){
$fp=fopen($filename, $filemode); flock($fp,LOCK_EX); fwrite($fp,$str) fclose($fp);
}
ahoaho( $filename1, "a", $str1 );
ahoaho( $filename2, "w", $str2 );
0533nobodyさん
2009/02/26(木) 18:02:42ID:???0534nobodyさん
2009/02/26(木) 18:07:13ID:???class sql {
function getUser() {}
}
class subsql extends sql {
function getParam(){}
}
class sub2sql extends subsql
0535nobodyさん
2009/02/26(木) 18:12:54ID:???この3つからgetUserを呼び出す際
呼び出しを統一のクラスで管理したいのですがsql,subsql,sub2sqlとクラス名が違うためできません。
クラスを上書きみたいなことはできないのでしょうか?
subsqlではなくsqlの追加ファンクションとして別ファイルで定義したいのです
途中で送信してしまい変な分になってます。ごめんなさい
0536nobodyさん
2009/02/26(木) 18:40:47ID:???おまえさん、スレタイが読めないように、クラスのこともわからないんだろうなぁ。
自分が何を聞きたいのかもう一度整理して、ID出してやりなおしてみたらどうよ
0538nobodyさん
2009/02/26(木) 21:31:11ID:???契約の金額が増えるほど
ディスクの容量が減る
ステキなヤフーのホスティングサービス
0539nobodyさん
2009/02/26(木) 22:27:45ID:???俺は逆にswitchの中には極力return以外を置かないようにしてる。
breakも不要になるからbreak忘れ防げるし、全てのcaseが即returnになってれば読みやすい。
0540nobodyさん
2009/02/26(木) 23:09:38ID:???って英語で質問したら、いっぱい回答きて
収拾つかなくなったよ
たすけて
どうしたらいい?
http://stackoverflow.com/questions/590464/how-do-you-write-a-process-to-do-something-every-24-hours
0542nobodyさん
2009/02/26(木) 23:46:35ID:lNT2RMd9http://example/test/
と言う場合、このディレクトリを取得する方法ってないでしょうか?
0545nobodyさん
2009/02/27(金) 00:44:14ID:???そのURL叩いて何らかのPHPスクリプトが実行されるのなら、__FILE__でそのスクリプトへのパスが取得出来る。
そのパスから親ディレクトリ取ってくる。
これで回答になってる?
0547nobodyさん
2009/02/27(金) 01:05:50ID:JrfelggM自分でビルドするしかないんでしょうか?
アプリを配布するにあたって、環境はなるべく本家(に近いところ)から落としてもらおうと思ってたんですけど。
0548nobodyさん
2009/02/27(金) 02:00:01ID:GwQuSr9T0549547
2009/02/27(金) 02:42:59ID:???試しにスクリプトとして実行しても、ヒット数増えなかったし。(一応古いバージョンのなら手元にバイナリがある)
PHPのコンパイル、ワケがわからん。
試しにPHP本体も作ってみるかと思ったんだが、
http://jp.php.net/manual/ja/install.windows.building.php
≫ the Windows build tools をダウンロードし、それを C:\work に展開する
ってあるのも、いきなりリンク切れしてるし。
apcも、とりあえずVCでコンパイルしようとしたら、VCのヘッダファイルでサイズが0の配列ってエラーが出るし。
どこから手をつけたらいいものやら。
0550nobodyさん
2009/02/27(金) 04:12:18ID:lL0tvrw7このページなんだけど、
getにしたのに、リロードしたら
カウントアップしてしまうんだよ
なんで?POSTだったら、そうなるってわかるけど、
getだったら、ならないはずなのに?
0551nobodyさん
2009/02/27(金) 04:15:05ID:???| ここでボケて!! |
|_________|
∧∧ ||
( ゚д゚)||
/ づΦ
0552nobodyさん
2009/02/27(金) 04:18:21ID:lL0tvrw7慎重に選考を進めてまいりましたが、
残念ながらご希望に添えない結果と
なりましたのでご連絡申し上げます。
今後ますますのご健康とご活躍をお祈り申し上げます。
0553nobodyさん
2009/02/27(金) 04:24:52ID:lL0tvrw7<form method=post action=2.php>
そこから元ファイルに飛ばせばフォームデータ消えるから、F5更新しても大丈夫
header("Location: http://example.com/1.php");
↑こんなめんどくさいこと
しないとだめなの?
0554nobodyさん
2009/02/27(金) 04:37:23ID:???HTTPの仕様とブラウザの仕様をもう少し勉強したほうがいい
0555nobodyさん
2009/02/27(金) 05:00:02ID:lL0tvrw70556nobodyさん
2009/02/27(金) 05:01:29ID:???0558nobodyさん
2009/02/27(金) 07:02:13ID:fK1SPmyApcntl_forkを使いフォークして複数プロセスにタスクを分配させました。
memcacheを共有メモリに使った簡易的なmap-reduceです。
プロセスを増やすほど速くなると思ったのですが、
個々のタスクの速度が落ちるだけで、
合計時間が縮まりません。
フォークを高速化目的に使うのは間違っているのでしょうか?
0559nobodyさん
2009/02/27(金) 08:55:05ID:YTPFMmJEmysql_fetch_arrayでやると$row[0]["TEST"]でデータが出てこないというか
[1]["TEST"]なら1、[2]["TEST"]なら2、・・・な値が出てくるんだけどそういうもんなの?・・
0561nobodyさん
2009/02/27(金) 09:25:13ID:???本命はmemcache。memcacheは相当遅いからボトルネックになってもおかしくない。
文字列と数値以外はシリアライズされるからその分重くなる。
単純にタスクが小さすぎるか、多すぎる可能性もある。タスクが小さすぎると、タスク分割/統合のオーバーヘッドが、分割による高速化を超える。
デュアルコアなら2分割以上の分割は無駄。たとえ100分割しても、働く人間が2人なら2つずつしか捌けん。
googleが速いのは、物理的に大量のサーバーに処理を分割してるのと、オーバーヘッドになるタスクの分割/統合自体も分散処理してるから。
いっぺんボトルネックがどこか測定してみ。
xdebugかzend debuggerを使えば、どの処理が時間を食っているか見られる。
0563nobodyさん
2009/02/27(金) 10:51:58ID:???フォークを高速化目的に使うのは基本的には間違いじゃね?
map reduceが目的にしているのは、大量のリソースを使えるという利点。
リソースの余剰がない1サーバー内でフォークしても重くなるだけ。
むしろ、高速化したいならフォークしてしまう処理を減らしたほうがいい。
0564nobodyさん
2009/02/27(金) 11:00:56ID:???ときぐらいだろ
待ち状態(サーバ側負荷ほとんど無し)のあいだに別プロセスで並行して通信できる利点
0565nobodyさん
2009/02/27(金) 13:02:18ID:vxQr4xVsclass sql {
function getUser() {}
}
class subsql extends sql {
function getParam(){}
}
class sub2sql extends subsql{
function getAge(){}
}
sqlしか必要がないファイル、sql,subsqlが必要なファイル、全部必要なファイル
この3つからgetUserを呼び出す際
呼び出しを統一のクラスで管理したいのですがsql,subsql,sub2sqlとクラス名が違うためできません。
クラスを上書きみたいなことはできないのでしょうか?
subsqlではなくsqlの追加ファンクションとして別ファイルで定義したいのです
途中で送信してしまい変な分になってます。ごめんなさい
0566nobodyさん
2009/02/27(金) 13:12:19ID:???$sql_obj = getSqlObj();// 必要に応じて sql,subsql,sub2sqlのインスタンスを返すメソッドね。
$sql_obj->getUser();
0567nobodyさん
2009/02/27(金) 13:13:08ID:/gqrgIY6値として受け取る方法ってありますか?
ソースはこんな感じです↓
class hoge{
private $hoge = array('h','o','g','e');
public function & refHoge(){ return $hoge }
}
$hogeCls = new hoge();
$rtn = $hogeCls->refHoge();
// $rtnをごにょごにょしたいが、$hogeは変えたくない
// 今は↓の処理をやってますが、もっと良いやりかたがあったら教えてほしいです
foreach($hogeCls->refHoge() as $key => $val){ $rtn[$key] = $val; }
0568nobodyさん
2009/02/27(金) 13:14:25ID:laCA4GxDfwriteすると、なぜか「\"」とバックスラッシュが入ってしまいます。
なぜでしょうか?
0573nobodyさん
2009/02/27(金) 14:16:10ID:???array型を参照で受け取る時は、メソッドと代入する側両方が & をつけないとならない
逆に言えば何も修飾せずに代入するだけでコピーになる
$ref = &$hogeCls->refHoge(); // 参照
$copy = $hogeCls->refHoge(); // 値
http://www.php.net/manual/ja/language.references.php
0574nobodyさん
2009/02/27(金) 15:39:39ID:/lC62y00例えば「61.195.146.164」と入力した場合、
「jp.php.net」「pobox.packetbusiness.com」などが返ってくるイメージです。
gethostbyaddr('61.194.146.164')だと
「pobox.packetbusiness.com」しか返って来ませんでした。
0575nobodyさん
2009/02/27(金) 15:47:10ID:???0577574
2009/02/27(金) 15:55:56ID:/lC62y00すみません、言い直します。
IPアドレスからホスト名を取得する方法が
gethostbyaddr以外にありますでしょうか?
0580nobodyさん
2009/02/27(金) 16:42:32ID:???0581574
2009/02/27(金) 16:57:55ID:???逆引きが一意であることと、正引きが複数設定可能なことくらいです。
DNSサーバに「このIPアドレスに正引きされるホスト名を教えてくれ」っていう
問い合わせはできないってことでOKですか?
0583nobodyさん
2009/02/27(金) 17:18:56ID:???「pobox.packetbusiness.com」しか返って来ませんでした。
あたりまえだろ
0584nobodyさん
2009/02/27(金) 17:21:27ID:???0586574
2009/02/27(金) 18:26:24ID:???ありがとうございます、自分の間違えが分かりました。
>>584
はい、そのとおりです。
SPAMメールの処理周りでそのようなことが出来るかどうか
疑問に思ったので質問いたしました。
---
DNSの初歩レベルの質問になってしまい失礼しました。
ありがとうございました。
0587nobodyさん
2009/02/27(金) 20:20:35ID:0buNRA0u$obj2=$obj1;
だと$obj1の参照になってしまうらしい。
$obj2=clone $obj1;
ってやっても、参照が渡されてしまった。助けて欲しい。
0590nobodyさん
2009/02/27(金) 21:56:28ID:kc9E5JKd$encoding[]=mb_detect_encoding($txt,'UTF-8,EUC-JP,SJIS,JIS');
$encoding[]=mb_detect_encoding($txt,'EUC-JP,SJIS,JIS');
$encoding[]=mb_detect_encoding($txt,'SJIS,JIS');
$encoding[]=mb_detect_encoding($txt,'JIS,UTF-8');
print("<pre>");var_dump($txt,$encoding,mb_convert_encoding($txt,'UTF-8','JIS'));die();
↓こうなる
array(3) {
[0]=>
string(5) "UTF-8"
[1]=>
string(6) "EUC-JP"
[2]=>
string(4) "SJIS"
[3]=>
string(3) "JIS"
}
0591nobodyさん
2009/02/27(金) 21:58:31ID:???$txtをそおまま表示しようとすると$とか矢印みたいなのが混ざったような文字化けで表示され、
mb_convert_encoding($txt,'UTF-8','JIS')するときちんと元に戻ります。
4.4.9とXAMPPの5.2.8で確認。
これはどうすれば?
0592590
2009/02/27(金) 22:00:28ID:kc9E5JKdあとvar_dumpの行間違えました。
var_dump($encoding)
です
0593nobodyさん
2009/02/27(金) 22:09:50ID:DvviDUUZ0595nobodyさん
2009/02/27(金) 23:43:16ID:???レガシーシステムも2年以内にはほぼ絶滅すると思う。
ttp://labs.cybozu.co.jp/blog/akky/archives/2008/12/php5-usage-stats.html
人口比だと2008年末時点で10%を割ってる。
0596nobodyさん
2009/02/28(土) 02:50:55ID:1Mc3y2O0正規表現ほど高度でない、
ある程度融通が利く文字列検索をしたいのですが(具体的には文字列から携帯絵文字を探す)
PHPで書くと、正規表現より遅かったり速かったりです。
Cで書かれていれば確実に正規表現より速くなるのではと思うのですが、
そういうextensionありますか?
0597nobodyさん
2009/02/28(土) 02:54:37ID:???0598nobodyさん
2009/02/28(土) 08:05:42ID:???0599nobodyさん
2009/02/28(土) 09:48:19ID:4FEE2no0ライブラリかサンプルコードとかってありますか?
0600nobodyさん
2009/02/28(土) 10:04:08ID:???0601nobodyさん
2009/02/28(土) 10:19:27ID:???パスワードは4文字以上10文字以内にしてくださいということにして
4文字→低
5〜7文字→単一種類の文字(数字or小文字or大文字)での構成は低
2種の文字しか混ざってない場合も低 3種の文字が混ざってる場合は中
8〜10文字→単一種類または2種類の文字での構成は中
3種の文字が混ざってる場合は高
例外として
記号などの特殊文字が混ざってる場合は5文字からでも高
全て同じ文字だと10文字でも低
とまぁこんな仕様を考えて実装すればいいんじゃないでしょうか
0603nobodyさん
2009/02/28(土) 10:35:26ID:???こんな関数あるのかーと思ったが辞書用意しないといかんのね
a
aa
aaa
aaaa
b
bb
bbb
bbbb
こんなん用意してたらキリがないよな
0604nobodyさん
2009/02/28(土) 10:36:33ID:???フリーで配布されているこちらのアップローダを見つけました。
ttp://php.eweb-design.com/1502_up.html
遣ってみたところとてもシンプルで気に入ったのですがphpに関しては
素人で分からないことだらけです。
そこで質問なのですが、アップロードできるファイルを .txt だけに限定する方法
を教えていただけないでしょうか?
それと容量オーバーのときだけに表示されるコメントも付けていただければ幸いです。
現在は1Mまでの制限でそれを超えると「アップロード失敗」とだけ表示されるようです。
次レスにソース部分を明記します。よろしくお願いします。
0605nobodyさん
2009/02/28(土) 10:39:19ID:????>
<?php htmlHeader(); ?>アップロード結果<BR><BR>
<TABLE border="0" width="350" cellspacing="1" cellpadding="3" bgcolor="#999999">
<TR><TD>ファイル名</TD><TD>サイズ</TD><TD>タイプ</TD></TR>
<?php
for($i=0;$i<sizeof($_FILES['fl']['name']);$i++) {
if($_FILES['fl']['name'][$i]=="") continue;
if(file_exists($updir.mb_convert_encoding($_FILES['fl']['name'][$i],"SJIS","EUC-JP"))==TRUE && $_POST['frb']=="true") {
?>
<TR bgcolor="#eeeeee"><TD><?php print($_FILES['fl']['name'][$i]); ?></TD>
<TD align="center" colspan="2"><FONT color="#ff0000">上書きできません</FONT></TD></TR>
<?php
} elseif(!is_uploaded_file($_FILES['fl']['tmp_name'][$i])) {
?>
<TR bgcolor="#eeeeee"><TD><?php print($_FILES['fl']['name'][$i]); ?></TD>
<TD align="center" colspan="2"><FONT color="#ff0000">アップロード失敗</FONT></TD></TR>
<?php
} else {
?>
<TR bgcolor="#eeeeee"><TD><?php print($_FILES['fl']['name'][$i]); ?></TD>
<TD align="right"><?php print($_FILES['fl']['size'][$i]); ?>Byte</TD>
<TD align="right"><?php print($_FILES['fl']['type'][$i]); ?></TD></TR>
<?php
move_uploaded_file($_FILES['fl']['tmp_name'][$i],$updir.mb_convert_encoding($_FILES['fl']['name'][$i],"SJIS","EUC-JP"));}
}
?>
</TABLE><BR>
<?php htmlFooter(); ?>
<?php function htmlHeader() { ?>
0606nobodyさん
2009/02/28(土) 10:52:03ID:tCRdHOmU0607nobodyさん
2009/02/28(土) 10:52:36ID:4FEE2no0自力で作ってみます
ありがとうございましたー!
0608nobodyさん
2009/02/28(土) 10:54:20ID:???} else {
の上に下記のように挿入
↓
} elseif( substr( $_FILES['fl']['tmp_name'][$i], strlen($_FILES['fl']['tmp_name'][$i])-4, 4 ) != ".txt" ) {
?>
<TR bgcolor="#eeeeee"><TD><?php print($_FILES['fl']['name'][$i]); ?></TD>
<TD align="center" colspan="2"><FONT color="#ff0000">拡張子が.txt以外はアップロードできません</FONT></TD></TR>
<?php
} else {
0609nobodyさん
2009/02/28(土) 10:54:41ID:???PHPじゃなくJavaScriptになるが
Extの拡張ライブラリにPasswordMeterってのがあってそれが便利だぞ
http://testcases.pagebakers.com/PasswordMeter/
0610nobodyさん
2009/02/28(土) 11:00:43ID:???0611nobodyさん
2009/02/28(土) 11:11:33ID:tCRdHOmU出来ました!ありがとうございます!
もうひとつだけよろしいでしょうか?
>>605のソースだと何バイトのファイルであったかアップロード後に表示されるのですが、
何行あるのかを表示させる場合はどのようにしたらよいのでしょうか?
つまり、アップロード後にファイル名、バイト数、行数を表示したいのです。
よろしくお願いします。
0612nobodyさん
2009/02/28(土) 11:22:21ID:???<TR bgcolor="#eeeeee"><TD><?php print($_FILES['fl']['name'][$i]); ?></TD>
<TD align="right"><?php print($_FILES['fl']['size'][$i]); ?>Byte</TD>
<TD align="right"><?php print($_FILES['fl']['type'][$i]); ?></TD></TR>
↓
<TR bgcolor="#eeeeee"><TD><?php print($_FILES['fl']['name'][$i]); ?></TD>
<TD align="right"><?php print($_FILES['fl']['size'][$i]); ?>Byte</TD>
<TD align="right"><?php print(count(file($_FILES['fl']['tmp_name'][$i]))); ?>行</TD>
<TD align="right"><?php print($_FILES['fl']['type'][$i]); ?></TD></TR>
未検証だけどたぶん動く
■ このスレッドは過去ログ倉庫に格納されています