【PHP】下らねぇ質問はここに書き込みやがれ 39
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/02/12(月) 20:33:59ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 38
http://pc10.2ch.net/test/read.cgi/php/1170520777/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ http://pc10.2ch.net/php/subback.html
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで http://pc10.2ch.net/db/subback.html
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
しかし初心者が目的も定めずに速度を気にしたところでほとんど意味は無いぞ
0039nobodyさん
2007/02/13(火) 02:59:03ID:???0040nobodyさん
2007/02/13(火) 03:20:17ID:V5Md+oDi$str = '"';
//for($str = '', $i = 0; $i < 10000; $i++) $str .= '(Aあ亜)'; //動く
//for($str = '', $i = 0; $i < 10000; $i++) $str .= '(""Aあ亜"")'; //動く
//for($i = 0; $i < 100; $i++) $str .= '(<input type=""text"" values = ""Aあ亜"">)'; //動く
for($i = 0; $i < 250; $i++) $str .= '(<input type=""text"" values = ""Aあ亜"">)'; //動かない文字1万ちょい
$str .= '","これは""マルチバイト""です",';
echo strlen($str)."<br>";
preg_match_all('/("(?:[^"]|"")*"|[^,]*),/', $str, $match);
echo count($match[0]);
違い全くわらかね;; 動く方が居たら、教えてください;;
もしそうならPC違いか… php.iniの設定でしょうか…
当方core 2 duo, memory1G, fedora5, PHP 5.1.6
0041nobodyさん
2007/02/13(火) 03:25:31ID:???ini書き換えた後再起動した?
そもそもその書き換えたiniをちゃんとシステムは読み込んでるの?(phpinfoすべし)
0042nobodyさん
2007/02/13(火) 03:33:53ID:V5Md+oDiえ? このコードでエラー出ます? 漏れの環境だと、画面真っ白で止まるのですが…
display_errorはOnです。もちろん再起動しましたが… 念のため、もう一回再起動してみます
0043nobodyさん
2007/02/13(火) 03:34:38ID:???0044nobodyさん
2007/02/13(火) 03:47:18ID:V5Md+oDidisplay_errors On
memory_limitとかの設定も反映されてますなぁ…
御願いですから上のコードを走らせてみて;; どうなりますか?
0045nobodyさん
2007/02/13(火) 03:58:23ID:???//検証したい方を残してもう一方をコメントアウト
$s = '(<input type=""text"" values = ""Aあ亜"">)'; //マッチしない文字列
$s = '(<input type=""text"" values = ""Aあ亜"">),'; //マッチする文字列
for($str = '', $i = 0; $i < 100; $i++) $str .= $s;
echo strlen($str)."\n"; // 4000 くらい
preg_match_all('/("(?:[^"]|"")*"|[^,]*),/', $str, $match);
echo count($match[0])."\n";
echo $time = microtime(true) - $time_start;
これでテストしてみると
マッチしない文字列 処理時間 10 秒
マッチする文字列 処理時間 0.00007 秒
つまりマッチしない文字列だとすご〜く時間が掛かるので
max_execution_time とかに引っ掛かって死ぬって事では?
0046nobodyさん
2007/02/13(火) 04:46:42ID:V5Md+oDiありがとうございます 楽しく検証できました〜 確かに時間かかりますねぇ。と言うより、マッチする文字列が早すぎですなぁ
それと死ぬって所は確かにそうだと思っています。
ちょと検証してみました。
max_execution_time 10
max_execution_time 450
max_execution_time 45000
全てループ回数235回、文字数10000+、五秒経過後、までは耐えます
その回数以上だと死ぬ感じになります
ついでにmax_execution_time 1 も試してみました
Fatal error: Maximum execution time of 1 second exceeded
やったw 久しぶりにエラー見たw pregのラインでした
0047nobodyさん
2007/02/13(火) 07:21:05ID:???俺の環境ではまったく問題ない
10532
2
と表示される
WinXP Apache2.0.59 PHP 5.2.0
0048nobodyさん
2007/02/13(火) 07:56:49ID:Ns+uranCコメントページにスパムの書き込みが大量にあり、
コメントページが編集不可能な状態に陥ってしまいました。
編集フォームまでは重いながらなんとかいけるのですが、
スパムコメントを削除して、
更新ボタンを押したところで応答が帰ってこなくなります。(しかも即答)
これってなんかの脆弱性ですよね?
脆弱性を報告したいのですが、どういう脆弱性なのかわかりません。
本来ならPukiWikiの専用スレを探してきくべきなのでしょうが、
こういう手の話題は、PHPでいろいろ開発してる方に聞いたほうがいいと思い、
ここで質問させていただきました。
考えられる脆弱性としてはどういうものが考えられるか教えていただければ嬉しいです。
0049nobodyさん
2007/02/13(火) 08:30:24ID:???オレも問題なくうごく
PHP4.4.4
OS:FreeBSD
Apach:1.3.37
max_execution_time 30秒だが、1秒くらいで結果が返ってくる
005148
2007/02/13(火) 09:54:02ID:Ns+uranCもうちょっと詳細を書くと、
入力値チェックはなく、なんでも書き込めるようになっていました。
あと一番最後の書き込みが、異様に長かったです。
750kbほどでした。
何かヒントになれば幸いです。
005348
2007/02/13(火) 09:56:13ID:Ns+uranCPukiWikiはデータベースは使っていません。
ログはテキストに書き込むようになってると思います。
0054nobodyさん
2007/02/13(火) 10:17:51ID:???情報が乏しくてはっきりしないが
サーバの制限に引っ掛かってるとかじゃない?
何が750KBあるのかようわからんがなんかに引っ掛かりそう
0055nobodyさん
2007/02/13(火) 11:05:43ID:???0056nobodyさん
2007/02/13(火) 11:26:57ID:???>>47>>49ありがとうございます
動くのかぁ… 会社の環境でも動かないんだよなぁ…スペック以外、全く環境一緒ですが…w ちなみにfedora5, php5.1.6, apache2.0.58
やっぱりループの回数も上限235くらい。
ループの回数500くらいでも、問題無く動きそうな感じっぽい文章ですよねぇ…
会社に来てから
set_time_limit(600);
ini_set('memory_limit', '1024M');
も試してみましたが、駄目ぽい。きっと設定なんだろうけどなぁ;;;;
>>55 Zend Studioお勧め。鯖サイドとAjaxまで含めたJavaScriptのデバッグがエクリプスで近い将来出来るらしいから、ほんとはエクリプスお勧め。両方激重なのが難点
0057nobodyさん
2007/02/13(火) 11:58:19ID:???ありがとうございます。
そうなんですよね、うちのPCもスペック低いのでEclipseしにそうになる・・orz
0058nobodyさん
2007/02/13(火) 12:03:12ID:9s+MbwuePHP IDEがいいよ。DEBUGできるし
0059nobodyさん
2007/02/13(火) 12:26:47ID:DIAK3rft今月初めのタイムスタンプ、終わりのタイムスタンプを取り出したい。
$nen=date("Y");
$tuki=date("n");
//今月初めと終わりのタイムスタンプ
$month_strart = mktime(0,0,0,$tuki,1,$nen);
$month_end = mktime(23,59,59,$tuki,31,$nen);
としたが、これでは上手くいかない。例えば2月は28日までしかないので、
これでやると、2月末日のタイムスタンプが欲しいのだが、
3月3日ぐらいのタイムスタンプになる。うるう年とか考えるともう・・・
解決お願いします。
006059
2007/02/13(火) 12:33:31ID:DIAK3rft0061nobodyさん
2007/02/13(火) 13:02:21ID:oNelk7aKtry〜catchが出来ない環境だと
どういった感じでcommit rollbackをすればいいのでしょうか?
0062nobodyさん
2007/02/13(火) 13:21:15ID:???素人でよくわかりませんが
ttp://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/php_s03.htm
なのどうでしょうか?
0064nobodyさん
2007/02/13(火) 13:45:17ID:oVwJ3IKfサイズを取得したい時はどうすればいいですか?
0065nobodyさん
2007/02/13(火) 13:46:24ID:???0066nobodyさん
2007/02/13(火) 13:46:44ID:zJDkWK4f0067nobodyさん
2007/02/13(火) 13:53:43ID:rCAmUKes$stmt = $obj_dbh->prepare("INSERT INTO test (name, price) VALUES (?, ?)");
$folder=array();
for($i=0 ;$i<2 ;$i++){
$stmt->bindParam( $i+1, $folder[$i] );
}
$data=array('ぶばぶば', 2000);
foreach($data as $key=>$value){
$folder[$key]=$value;
}
$stmt->execute();
上のはうまく動くのですが
$stmt = $obj_dbh->prepare("INSERT INTO test (name, price) VALUES (?, ?)");
$folder=array();
for($i=0 ;$i<2 ;$i++){
$stmt->bindParam( $i+1, $folder[$i] );
}
$data=array('ぶばぶば', 2000);
$folder=$data;
$stmt->execute();
こうすると空のデータが放り込まれるのですがなぜでしょうか?
上ので動くのでやりたいことは出来るのですが、
どうしてなのか気になったもので。
両方とも print_r($folder) すると、変数のなようはまったく一緒です。
bindというのをイマイチ良く理解していなのですがその辺が原因で何か勘違いしてますでしょうか?
0068nobodyさん
2007/02/13(火) 13:53:44ID:???$str.= $i==99 ? str_pad($i,3,"0",str_pad_left) : str_pad($i,3,"0",str_pad_left)."-";
}
とかは?
006968
2007/02/13(火) 13:56:01ID:???$str.=str_pad($i,3,"0",str_pad_left);
$str.= $i==99 ? "" : "-";
}
こうか
007066
2007/02/13(火) 14:03:01ID:zJDkWK4fむ、、難しそうだ。
array(001,002)とかで定義してやってみます><
0071nobodyさん
2007/02/13(火) 14:05:56ID:???そんなこともできるるんだな。
参照でわたってるからなんだろうけど・・・
気持ち悪いことするね。
値代入してから、それを使うのが普通だろ?
0072虚弱PHP
2007/02/13(火) 14:15:05ID:???参照の問題じゃないかな。
つまり、bindParamした$folderを$dataで"上書き"しているからうまくいかない。
0075nobodyさん
2007/02/13(火) 14:43:39ID:???この関数調べる文字列の、一番最初の文字を
無視してしまっているようなのですが、どうすればちゃんと探してくれるんでしょうか?
0078nobodyさん
2007/02/13(火) 15:35:09ID:Nn5A3pDr> クッキー名で配列を記述することにより、 クッキーの配列を設定することも
> 可能ですが、複数のクッキーがユーザーのシステム上に保存されることになります。
> explode() を使用してひとつのクッキー上に複数の名前と値をセットすることも考慮してください。
http://www.php.net/manual/ja/function.setcookie.php
とのことですが、みなさんはどうしていますか?
Googleなどは一つのクッキー上にまとめてセットしているようです。
配列の数が少なければ問題ありませんかねぇ?(二つだけです)
0079nobodyさん
2007/02/13(火) 15:47:42ID:???http://bakera.jp/hatomaru.aspx/glossary/30b530cb30bf30a430ba
に、
>※なお、これは HTML 文書中の属性値が全て二重引用符で括られている場合です。そうでない場合は、単引用符やスペースなども危険な文字となることがあります。
などと書いてあります。
これってどういうこと!? スペースまでサニタイズするのって無理じゃネ??
たとえばmixiなんて属性を二重引用符で囲ってないから、危険ってこと?
0080虚弱PHP
2007/02/13(火) 15:58:11ID:???<input type=hidden value=<?php echo $_GET['a'];?>>
↓
$_GET['a'] = 'a onMouseOver="alert();"';
↓
<input type=hidden value=a onMouseOver="alert();">
二重引用符で囲んどけば、そんなに気にしなくてOK。
0081nobodyさん
2007/02/13(火) 15:58:54ID:Nn5A3pDr二重引用符で括ってある場合は「< > & "」をサニタイズすれば
(一応)問題ないが、単引用符で括ってある場合はさらに「'」もサニタイズする必要があるってこと。
属性値をちゃんと引用符で括ってあれば半角スペースまでサニタイズする必要はないと思う。
HTMLの仕様は、単引用符でも二重引用符のどちらでもよいことになっているけれど
二重引用符の方がいいんじゃないかな。
0082nobodyさん
2007/02/13(火) 16:06:21ID:???0083nobodyさん
2007/02/13(火) 16:12:11ID:Nn5A3pDrWorld Wide Webに関する技術の標準化を行っている
「W3C」が仕様書を勧告しています。
まあ、一応日本語訳:
http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/intro/sgmltut.html#h-3.2.2
0084nobodyさん
2007/02/13(火) 16:16:01ID:UEm9K3UG0086nobodyさん
2007/02/13(火) 16:20:01ID:oVwJ3IKfimagecolorresampledをしたのですが、
透過でなくなってしまいます。
透過のままサイズ変更するにはどうすればいいですか?
0089nobodyさん
2007/02/13(火) 16:25:46ID:???>普通にログインしてる人はe-mailとpasswordがバレバレだしw
なにそれ。適当な嘘吐きはイカンよ。
IEでmixiにログインしてる場合はアレな部分があるけど、
メアドとパスワードなんて漏れないし。
0091nobodyさん
2007/02/13(火) 16:26:24ID:???なんで? なんで全部覚えなくちゃいけないんだ?
マニュアルを参照すればいいだけなのに……。
>>87
悪い例なんじゃないの?
0093nobodyさん
2007/02/13(火) 16:29:30ID:???他人がセキュリティーホール満載のページ作っても関係ねーしなw
0097nobodyさん
2007/02/13(火) 16:35:01ID:3uUSgwIq0098nobodyさん
2007/02/13(火) 16:35:19ID:???それはmixiの脆弱性というよりHTTPというプロトコル自体の脆弱性というか仕様だしww
しかもパケットキャプチャなんて実際には確率的にほぼ実行不可能だし。
キャプチャがやれるもんならやってみろよww 少なくともお前らには無理だからw
009989
2007/02/13(火) 16:35:41ID:???mixiってメアドもパスワードもバレバレだったんですね^^;
お恥ずかしい発言してごめんなさい…
0100nobodyさん
2007/02/13(火) 16:36:00ID:???例え通信でばれなくても鯖管にはわかるわけだし、中の人が信じられる保証はどこにも無い
0101nobodyさん
2007/02/13(火) 16:37:10ID:???無知な大衆の不安を無駄に煽るせいで、
むやみに「セキュリティ! セキュリティ!」と騒ぐバカがさらに増える悪循環。
0102nobodyさん
2007/02/13(火) 16:38:33ID:???で、お前は実際にキャプチャできたことがあるのか?とwwww
っていうか>>100がいいこと言った。
0103nobodyさん
2007/02/13(火) 16:38:48ID:???そこまで心配するなら、キーロガーからなにからなにまで心配しないと。
0104nobodyさん
2007/02/13(火) 16:41:13ID:???クッキーに生のIDとパスワードを保存してそうだなw
0106nobodyさん
2007/02/13(火) 16:43:55ID:UEm9K3UGインターネット上を飛び交ってるデータをキャプチャするのはどうやってやるの?
ユーザーとサーバーを仲介しなきゃ無理なんじゃないの?
どうやって仲介するのさ?
キャプチャで検索してもネットワーク上のことしか書いてないんだけど・・・
0107nobodyさん
2007/02/13(火) 16:44:02ID:???パケットキャプチャか
そういうレベルなら、メールの内容もつつぬけだお。
0108nobodyさん
2007/02/13(火) 16:44:05ID:???Yahooのログインにはhttpsもある。
それが答えだろ。危険じゃないならhttpsなんか用意する必要ないんだから。
0110nobodyさん
2007/02/13(火) 16:46:59ID:???メールも暗号化できるお。
0111虚弱PHP
2007/02/13(火) 16:49:59ID:???mixiはさすがに、こんな単純な穴はふさいであるんじゃない?
よくわからんけど。
可変項目じゃなければ、引用符で囲われてなくても普通は問題おきないだろうし。
>>87
あ、ごめん。説明足りなかった。脆弱性の例を書いてみた。
0112nobodyさん
2007/02/13(火) 16:51:46ID:???個人責任の部分はサイト側でどうにかできるわけでもなし
0113nobodyさん
2007/02/13(火) 16:52:44ID:UEm9K3UG最近httpsも一応導入してるみたい
0116nobodyさん
2007/02/13(火) 16:57:47ID:???mixiはトップページにログインできる画面があるから
そのままログインしてしまう初心者はパスワードバレバレである
ただしhttpsでログインしてるユーザーはばれない
0117虚弱PHP
2007/02/13(火) 16:58:14ID:???Webブラウズは全部httpsじゃないとダメだろうね。
0118nobodyさん
2007/02/13(火) 16:58:27ID:???なんで全部なんだよ。
芸能ニュースみるのにGETするときに暗号化する必要あんのかよ。
しかし昔のYahooのログインはデフォがhttpだったんだけど
いまはデフォがhttpsになったんだな
0119nobodyさん
2007/02/13(火) 17:00:45ID:UEm9K3UG0121nobodyさん
2007/02/13(火) 17:04:43ID:???0122nobodyさん
2007/02/13(火) 17:07:12ID:???0123nobodyさん
2007/02/13(火) 17:12:53ID:0SkSueaHSSLとかSSIみたいなアルファベット3文字で、無料レンタルサーバーでは使用禁止に
されることがあるアレのこと。
0125nobodyさん
2007/02/13(火) 17:16:59ID:???0126124
2007/02/13(火) 17:17:04ID:???それ以外か…吊ってきます
0127nobodyさん
2007/02/13(火) 17:24:09ID:Q9x6IAh5インストールする順番は
Mysql→Apache→PHPの順番でいいのでしょうか?
昨日PHPを先にインストールしたせいかライブラリが足りなくて…
0129nobodyさん
2007/02/13(火) 17:30:48ID:???0130nobodyさん
2007/02/13(火) 17:32:55ID:???キャプチャできるという前提で話してるんじゃないの?
ログイン画面だけhttpsにしても駄目でしょ?
セッション盗まれちゃうよ?
セキュリティ的にどうかという視点で並べると
全てhttps>ログイン画面だけhttps>全てhttp
ってだけのこと。
漏れたときのリスクを考えて適時選択すればよいだけ。
>>106
ローカルネット(と書くのも適切じゃないと思うけど、そのあたりは
私のスキル足りなくてよくわからんとです)間でしかキャプチャで
きないので、普通、キャプチャうんぬんは心配しなくってよいと思うよ。
まぁ、現実的に気になる例をあげるなら、会社でネットやってるときだろうな。
といいつつ、今はスイッチングハブ使ってるだろうから、一部は覗けても
全部覗き見するのは無理だろうと思ってる。
0132nobodyさん
2007/02/13(火) 17:53:41ID:???もう夏厨が……
0133nobodyさん
2007/02/13(火) 17:55:23ID:???パッケージでインストールするなら、あまり順序とか
気にしなくても自動でやってくれるはずだけどな。
PHPのパッケージは細分化されてるから、MySQLのモジュール
をインストールしていないとか、インスト忘れてるパッケージ
あるんじゃない?
ソースから入れるなら、>>131が言うとおりだと思う。
0134nobodyさん
2007/02/13(火) 18:14:34ID:???0136134
2007/02/13(火) 18:20:02ID:???0139134
2007/02/13(火) 19:03:58ID:???■ このスレッドは過去ログ倉庫に格納されています