【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を表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
0619nobodyさん
2009/02/28(土) 12:17:57ID:???あれ、一時ファイルってファイル名変わっちゃうんだっけ?これでどう?
} elseif( substr( $_FILES['fl']['tmp_name'][$i], strlen($_FILES['fl']['tmp_name'][$i])-4, 4 ) != ".txt" ) {
↓
} elseif( substr( $_FILES['fl']['name'][$i], strlen($_FILES['fl']['name'][$i])-4, 4 ) != ".txt" ) {
.htmlがアップできないのはおまえさんの仕様だぞ
0621nobodyさん
2009/02/28(土) 12:27:20ID:tCRdHOmUありがとうございました。バッチリでした!
0622nobodyさん
2009/02/28(土) 13:06:03ID:B+Uhif0K利用者が入力するところはなし、強いて言えばリンクが○○.php?a=○&b=○の形なのでそこをいじることはできますが、
値は1桁の数字のみ通るようにしてかつそれを直接クエリに使うわけではなくswichでWHERE句用の値を選ぶようにしています。
検索もなし、セッションやクッキーは使いません。
DBはSQLiteなので.htaccessで見えないように。
エラー表示も.htaccessでphp_flag display_errors Offに。
こんな感じにしたとして、鯖自体がハッキングされたとかはのぞいてphp(html)やDBの改竄は行われる可能性はありますか?
0623nobodyさん
2009/02/28(土) 13:25:32ID:iUikJcgx$buf=socket_read($out,2048);
で読むことはできるのですが、データが2048byteに足りていないとここで処理がブロックされてしまい、
データが2048byteの倍数でないと必ず最後でとまってしまいます。
長さを1にすれば数万回の無限ループみたいになって処理が遅いし、
長さはともかくいま届いているデータを全て読む、ブロックしない読み込み方法が見当たらなかったです。
socket_recvというメソッドもあるみたいですが、ドキュメントもまだないし
これがない時代も当然できていたはずのことなので、きっとreadで何とかする方法があるんだと思いますが…。
0624nobodyさん
2009/02/28(土) 13:35:50ID:???悪魔の質問だな。
脆弱性の存在を示す事は可能だが、脆弱性が存在しない事を証明するのは至難の業。
セキュリティ対策の多くが「入力時点で全ての値を検証」「出力時点で全てエスケープ」のようにシステマチックなのはその辺に理由がある。
書かれている部分は安全に思える。ツボも押さえているし、他の部分で変な事をしない限り問題ないだろう。
強いて言うなら「入力する場所はなし」という言い方が若干不安かな。
hiddenだろうがなんだろうが全ての値は自由に改竄される、という前提でコーディングする必要がある。
0625nobodyさん
2009/02/28(土) 13:47:32ID:Ho2Fi0s+今まではサーバーとルータだけでやっていたのですが今回ハブを使いPCをもう一台LAN内に追加しました。
そしたら自分のサイトの表示が極めて遅くなり
ページを切り替える毎に3秒位かかります。
LAN内だけかと思いネットカフェで試しましたがやっぱり遅かったのです。
ちなみにサーバーからLANケーブルを抜くと今まで通り高速で表示されます。
そのため初めはLANの設定の問題だと思ったのですが
同じサーバー内のPHPを使ったページでも速いページと遅いページがある事に気がつきました。
しかし遅いページがなぜこれ程遅いのかが色々いじってみたのですが分かりません。
おそらくPHPの使用関数なんかの問題だと思うのですが。
何で?知ってるやつ教えてや。
逆引きとかはしてないです。
0626nobodyさん
2009/02/28(土) 14:06:43ID:???0627nobodyさん
2009/02/28(土) 14:09:33ID:B+Uhif0Kありがとうございます。
>強いて言うなら「入力する場所はなし」という言い方が若干不安かな。
付け加えるとjavascriptも使わないのでプルダウンで選択とかもありません。
ほんとにリンクをクリックしていくぐらいです。
ただまあ思い当たるところは列挙しましたが洩れもあるかもしれませんし、
どちらにしろhtmlspecialchars他一応の処理はしています。
完全にとはいえないが大まかに改竄の入り口は認識できてるとみていいもんでしょうか。
0629nobodyさん
2009/02/28(土) 14:46:51ID:AWhVh/M4ありがとうございます
getimagesizeでは不十分と認識しておりますので他にチェックする方法をご存知でしたらご教示おねがいします
0630613
2009/02/28(土) 14:47:33ID:8fTqh/0P0631nobodyさん
2009/02/28(土) 15:04:01ID:???いや、getimagesizeでいいんだよ
それに加えて、画像の保存先ではスクリプトの実行ができないようにすればおk
0634nobodyさん
2009/02/28(土) 16:05:48ID:???哲学的な言い方をすると、
不安に思うようなら、脆弱性はあるかもしれないね。
他人に保証を求めるとしたら、それもまた脆弱性のひとつかもしれん。
セッションでもクッキーでも環境変数でも、それぞれがどんな形で渡ってくるか、
そして渡しているか、ブラウザの挙動はどうか、そういう理解度を深めていくしかないんじゃないか?
0637nobodyさん
2009/02/28(土) 17:01:27ID:???0638nobodyさん
2009/02/28(土) 17:05:42ID:???きょうび、CMSのコミッターですらその程度の認識をしてたりするから困るよな。
実行権限をはく奪って、もともとPHPは読み込み権限で動くわけだし。
画像ファイルにスクリプトインジェクションされるってのをケアしないんだろうし。
0639625
2009/02/28(土) 17:18:45ID:Ho2Fi0s+いや、最初はそう思ったのですがどうやらPHPの関数により速度が遅くなってるようなんです。
というのもPHPの関数が少ないページは高速に表示するからです。
ただ、何の関数が遅い原因なのかが割り出せません。
何なのか分かる奴よろしく。
0640nobodyさん
2009/02/28(土) 17:19:10ID:???ttp://websec-memo.blogspot.com/2007/06/php-getimagesizephp.html
0641nobodyさん
2009/02/28(土) 18:04:55ID:???つ xdebug.profiler_enable = 1
あと、Windows機があるならWinCacheGrid
0642nobodyさん
2009/02/28(土) 18:05:36ID:???0643nobodyさん
2009/02/28(土) 19:42:43ID:Lzy3hD4E画像のファイルサイズが0kb になって 保存できない・・・orz
ファイル名指定
header("Content-Disposition: attachement; filename=foo.jpg");
をつけても0kb・・・
どうしたらいいんだぁ・・・
0644nobodyさん
2009/02/28(土) 20:27:57ID:???ドッカン
m ドッカン
=====) )) ☆
∧_∧ | | / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( )| |_____ ∧_∧ < おらっ!出てこい>>635-636
「 ⌒ ̄ | | || (´Д` ) \___________
| /  ̄ | |/ 「 \
| | | | || || /\\
| | | | | へ//| | | |
| | | ロ|ロ |/,へ \| | | |
| ∧ | | | |/ \ / ( )
| | | |〈 | | | |
/ / / / | / | 〈| | |
/ / / / | | || | |
/ / / / =-----=-------- | |
0646nobodyさん
2009/02/28(土) 22:32:57ID:???拡張子は別にして
0647nobodyさん
2009/02/28(土) 22:35:26ID:???そこから、
> それ以外にヘッダで判別できるところあんの?
っていう展開が意味不明
0649nobodyさん
2009/02/28(土) 22:49:44ID:???0650nobodyさん
2009/02/28(土) 22:54:24ID:???ヘッダの一部しか見てない って、他にも判別できる部分があるようにとれない?
ヘッダの(他にも判別するところはあるけど)一部しか見てない なのか
ヘッダの一部(で)しか見てない なのかってことね
0654nobodyさん
2009/03/01(日) 00:31:01ID:???これで回避できるとも読めるわけだが、どうなんだろう。
0655nobodyさん
2009/03/01(日) 00:31:30ID:???0658nobodyさん
2009/03/01(日) 01:09:42ID:???最終的にブラウザで表示できるんだから何でもいいだろ
0659nobodyさん
2009/03/01(日) 01:18:56ID:???0660nobodyさん
2009/03/01(日) 02:35:03ID:eUPI6W900661nobodyさん
2009/03/01(日) 03:05:47ID:ircjQ+OXtxtファイルや、htmlファイルは、
ユーザーにrを渡さないと
ブラウザで閲覧したときに見れないんだけど、
.phpファイルは、なぜか
ユーザーに渡す権限が0でも
ブラウザでアクセスしたときに、
動作してしまうんだけど、これってなんで?
0663nobodyさん
2009/03/01(日) 03:47:49ID:ircjQ+OXオーナー | グループ | 末端ユーザー
こういう概念です
0664nobodyさん
2009/03/01(日) 03:50:25ID:ircjQ+OX「CGIに関しては純粋にSuExecでの動作」
「CGI版をラッパーを使用し所有者の権限にて動作させる」
と書いてあります。
0665nobodyさん
2009/03/01(日) 04:31:12ID:???答えが書いてあるよ〜。
Webサーバの一番基本的な動きは分かってるかな?
ブラウザが「このファイルくれ!」ってWebサーバにいうと
Webサーバは自分の中から探して、読みこんで、「処理して」、結果をブラウザに返す。
このときWebサーバもユーザとして動いてる。
こんだけ。
0666nobodyさん
2009/03/01(日) 06:55:07ID:ircjQ+OXMySQLの例ばっかりなのだが、
これってSQLiteでもできるんだよね?
コードはどう書けばいいのかな?
特にDSNのあたり。
http://oshiete1.goo.ne.jp/qa3008843.html
このサンプルで、DSNをSQLiteに変更したものを
書いてもらえますか?
0667nobodyさん
2009/03/01(日) 06:59:03ID:ircjQ+OXpear::authを使うことの是非についても
意見を述べてもらえますか?
pearのページ見たら、認証のカテゴリだけで7つも
モジュールあるじゃないですか。
0669nobodyさん
2009/03/01(日) 11:45:18ID:???質問
の人な気がするぜ
0670nobodyさん
2009/03/01(日) 13:13:02ID:???0671nobodyさん
2009/03/01(日) 13:42:43ID:???0672nobodyさん
2009/03/01(日) 14:46:48ID:lFCp+aHu(ググろうにも「<?=?>」のようなワードでは検索できなくて・・・)
0673nobodyさん
2009/03/01(日) 14:50:54ID:lFCp+aHu0674nobodyさん
2009/03/01(日) 17:35:53ID:Jolk/1HKが含まれているかどうかを調べるにはどのようにするのがよいのでしょうか?
0675nobodyさん
2009/03/01(日) 17:41:35ID:???foreach
preg_match
0676nobodyさん
2009/03/01(日) 17:43:35ID:???strstrあたりでいいと思う
0677nobodyさん
2009/03/01(日) 17:43:53ID:???0678nobodyさん
2009/03/01(日) 17:46:03ID:Jolk/1HK0680nobodyさん
2009/03/01(日) 17:51:32ID:???0681nobodyさん
2009/03/01(日) 18:02:38ID:qwqgUI7e$list = file("hoge.txt");
for ($i = 0; $i < count($list); $i++) {
if (strpos($list[$i]), "hogehoge") {
echo $i . "行目にhogehogeが見つかりました<br>\n";
}
}
これと同じことをできるのなら俺もぜひ教えてもらいたい
0682681
2009/03/01(日) 18:04:25ID:???$i行目じゃなくて$i+1か
0683nobodyさん
2009/03/01(日) 18:20:01ID:???なんじゃこりゃ?
0685681
2009/03/01(日) 18:38:49ID:???for ($i = 0; $i < count($list); $i++) {
if (preg_match("/hogehoge/", $list[$i])) {
echo $i+1 . "行目にhogehogeが見つかりました<br>\n";
}
}
それじゃこれで
0686nobodyさん
2009/03/01(日) 18:41:12ID:???動作には問題ないけど
for内にcount($list)を入れると、ループ毎にcountが実行されるので、
$cnt = count($list);
$i < $cnt
みたいにするといいよー
0687nobodyさん
2009/03/01(日) 19:29:13ID:???preg_matchじゃだめだった
無駄にfileとforeachしなくてもpreg_match_all使えば一行で住む
0688nobodyさん
2009/03/01(日) 19:42:54ID:???0689nobodyさん
2009/03/01(日) 20:20:12ID:???0690nobodyさん
2009/03/01(日) 22:47:16ID:Jolk/1HKdatファイル(数字10桁)かどうかを調べるにはどうすりゃいいの?
これだとダメポ。
$datfile = 1234567890.dat;
$number = str_replace(".dat", "", $datfile);
if ($number != \d{10}){
print "2chのdatじゃない";
} else {
print "おk";
}
0691nobodyさん
2009/03/01(日) 22:52:53ID:???0692nobodyさん
2009/03/01(日) 22:54:09ID:???$datfile = "1234567890.dat";
if (preg_match("/^\d{10}\.dat$/", $datfile)) echo "おk";
else "2chのdatじゃない";
0693nobodyさん
2009/03/01(日) 22:59:06ID:Jolk/1HK0694nobodyさん
2009/03/01(日) 23:04:31ID:???0695nobodyさん
2009/03/01(日) 23:16:30ID:A3j42u8WPHPにZIPを解凍する関数ってあるのでしょうか?
やっぱり、フォームのfile要素をいくつも用意して
1つずつ選択して送信する方法しかないのでしょうか?
0696nobodyさん
2009/03/01(日) 23:21:54ID:???zipだけでもArchiveTarとかArchiveZipとかpecl zipとか色々
0697nobodyさん
2009/03/01(日) 23:26:26ID:???0698nobodyさん
2009/03/01(日) 23:27:29ID:???0700nobodyさん
2009/03/01(日) 23:38:13ID:???暗号化ZIPには対応してないようだけど
0701nobodyさん
2009/03/01(日) 23:40:37ID:???0702nobodyさん
2009/03/01(日) 23:50:07ID:???回答もらったらお礼ぐらい書けよksg
0706nobodyさん
2009/03/02(月) 00:56:54ID:???0707nobodyさん
2009/03/02(月) 06:17:58ID:???一部の文を変更するプロキシみたいなの
作りたいんだけど、できる?
「この商品を買った人はこんな商品も買っています」
↓これを
「この商品を買ってしまったかわいそうな人はこんな商品も買っています」
みたいに変更して表示したいんだけど。
チラ見だと気がつかないって言う。
よーく見ると違いがわかるっていう。
0709nobodyさん
2009/03/02(月) 06:36:54ID:xA87Qrbu指定したMD5(またはSHA-1)の値を持つファイルを取得したいのですが、
なにかよい方法はないでしょうか?
やはり、一度全部取得して、
ひとつひとつ確認する必要があるのでしょうか?
よろしくお願いします。
0710nobodyさん
2009/03/02(月) 08:01:04ID:Kxwrby6q$i = 2;
while($files[$i] != null ):
$files_end = $i;
$i++;
endwhile;
と、docフォルダに入っているファイル数をしらべるスクリプトですが、
while($files[$i] != null ):
の行で
Notice: Undefined offset: 5
と、Noticeが出て来ます。
この、Noticeを消すにはどうしたらいいでしょうか?
0712nobodyさん
2009/03/02(月) 08:05:07ID:???使えたらかっこいいんだろうなと思って
使いたい使いたいと思ってるけど結局使わないまま終わってしまう
0715nobodyさん
2009/03/02(月) 10:10:58ID:???OUT => while($files[$i] != null ):
IN => while( isset($files[$i]) ):
0716nobodyさん
2009/03/02(月) 10:18:29ID:???無理して使わなくていいよ
所詮プログラミング手法の1つに過ぎない
世の中には全てオブジェクトにしないと扱うことができない
言語も存在するがPHPはそうではない
使いどころを意識してるうちは概念も理解できないはずだ
オブジェクト指向が何かとかは考えないで
まずはオブジェクトにしないとプログラムが動かないと思ってはじめてみるといい
0717nobodyさん
2009/03/02(月) 12:30:23ID:???0718nobodyさん
2009/03/02(月) 12:39:55ID:???■ このスレッドは過去ログ倉庫に格納されています