1 名前:nobodyさん mailto:sage [2013/11/10(日) 15:46:09.34 ID:???] 質問者はまず>>1 を良く読むこと(必須!) 過去スレ、関連スレ、FAQなどは>>2-10 辺り 次スレは>>980 が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。 ◆前スレ 【PHP】下らねぇ質問はID出して書き込みやがれ 130 kohada.2ch.net/test/read.cgi/php/1379566039/ ◆質問用テンプレ 【OS名】CentOS 【PHPのバージョン】5.3 【連携ソフトウェア】MySQL ImageMagick 【質問内容】 ◆質問する時の注意 ・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す) ・ 己の行った操作、変更などを詳しく明記すること。 ・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。 ・ 質問者として、態度をわきまえること。 ・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。 (PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。) ◆質問後の注意 ・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。 ・解決しなくても回答をもらった場合はお礼を言うこと。 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。) ◆回答者への注意 ・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。 【その他諸注意】 ・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
271 名前:nobodyさん mailto:sage [2013/11/19(火) 01:02:24.07 ID:???] >>270 プリペアすることだろ
272 名前:nobodyさん mailto:sage [2013/11/19(火) 10:43:34.31 ID:???] PHPがレベル低いって思われる最たるものが大手のFWでprepare使わずに、自前やquoteメソッドで対応してる例があることだ
273 名前:nobodyさん mailto:sage [2013/11/19(火) 10:54:41.60 ID:???] そういうのをPHPガーって言うのが恥ずかしくない頭なんだろうな。
274 名前:nobodyさん mailto:sage [2013/11/19(火) 11:09:09.11 ID:???] >>273 これに関しては仕方ないんじゃないか FuelPHPとかあそこらへんも終わってたような
275 名前:nobodyさん mailto:sage [2013/11/19(火) 11:57:37.76 ID:???] 個別のソフトの問題や、使ってる人の問題を、言語自体の問題にすり替えて仕方ないと言ってるから、 あおりのレベルが低いんだよな。
276 名前:nobodyさん mailto:sage [2013/11/19(火) 12:16:10.14 ID:???] 使えないFWが多いのはちょっと問題だとは思うけどなー 使ってる人の問題だけど、そういうFWを推してる人はどうにかならんかな
277 名前:nobodyさん mailto:sage [2013/11/19(火) 12:17:54.87 ID:???] 下見て暮らしてる奴だからしょうがない
278 名前:nobodyさん mailto:sage [2013/11/19(火) 12:18:57.84 ID:???] >>277 は>>275 に対してね
279 名前:nobodyさん mailto:sage [2013/11/19(火) 12:20:03.73 ID:???] FWなら結局、CakePHPがいいよね。
280 名前:nobodyさん mailto:sage [2013/11/19(火) 12:28:14.36 ID:???] よくない
281 名前:nobodyさん mailto:sage [2013/11/19(火) 12:30:37.60 ID:???] CakePHPは日本と日本のオフショア先だけまだまだ盛んだな
282 名前:nobodyさん mailto:sage [2013/11/19(火) 12:39:02.32 ID:???] fuelは出た手の頃、ormがPrepare使ってなくて使うのやめたんだが 今も治ってないの?
283 名前:nobodyさん [2013/11/19(火) 12:53:02.64 ID:hKBGRur1] >>282 fuelphp.jp/docs/1.6/general/security.html#sql
284 名前:nobodyさん mailto:sage [2013/11/19(火) 13:15:30.92 ID:???] >>283 ダメではないか
285 名前:nobodyさん mailto:sage [2013/11/19(火) 13:17:38.96 ID:???] 私JKで試したわけぢゃないけどーprepare+bindXxxって query+quoteに比べて処理工数が多いだけに遅そうだしー ただでさえ遅いFWの速度をあげるには仕方ないのでゎ
286 名前:nobodyさん mailto:sage [2013/11/19(火) 13:21:29.56 ID:???] >>285 そんなんボトルネックにならん
287 名前:nobodyさん mailto:sage [2013/11/19(火) 13:23:36.67 ID:???] ちっちゃいのが積み重なると大きくなるけどね
288 名前:nobodyさん mailto:sage [2013/11/19(火) 13:24:21.74 ID:???] >>284 一昔前の文字コードやエスケープ処理での脆弱性を知らないんだろうし シングルバイト系の人は知らない人多いし
289 名前:nobodyさん [2013/11/19(火) 13:37:06.01 ID:hKBGRur1] >>284 >> 288 だめなの? fuelphpてSQLインジェクション防げないんだ… これはオワコンだわ
290 名前:nobodyさん mailto:sage [2013/11/19(火) 13:49:33.19 ID:???] >>289 基本的には防げてるし、新たに発見された脆弱性も継続して修正されてる。 fuelphp.com/security-advisories 「プリペアードステートメントを使ってないからSQLインジェクションの脆弱性がある」というのはFUD。 とはいえ、プリペアードステートメント使えやとは思うけどね。
291 名前:nobodyさん mailto:sage [2013/11/19(火) 13:57:50.15 ID:???] SQLインジェクションは、Prepare使わないと防げないわけではない。 そもそもでいえば、インジェクション防止の機構じゃねーし。 SQLの機構じゃなくて、ライブラリのラッパなので、仕様によっては 使っていても問題ないというわけではない。
292 名前:nobodyさん mailto:sage [2013/11/19(火) 13:58:01.02 ID:???] >>285 クエリを実行するとき、データベースサーバでは、 1. 構文解析 2. 実行計画立案 3. クエリ実行 の処理が必要で、prepareでは1または1&2が行われる。(構文のみで実行計画を立てて固定する場合と、3で渡された パラメータをもとに実行計画を立てる場合がある) 一方、exec queryでは毎回1〜3が行われる。 なので、同じ処理をパラメータを変えながら複数回実行する場合、プリペアードステートメントを使った方が速い場合がある。
293 名前:nobodyさん mailto:sage [2013/11/19(火) 14:08:35.69 ID:???] レスありがとうございます >>268 PHPが何なのか解らず、単にネットプログラムの質問スレで質問させて頂きました >>269 大手企業サイトなので厳しいですね ど素人ながら、ログインボタンのURLとかPCでログイン後のURLとか試したんですが、無理でした
294 名前:nobodyさん mailto:sage [2013/11/19(火) 14:12:15.36 ID:???] >>293 > 大手企業サイトなので厳しいですね 大手こそ対応してくれそうなもんだが。 「○○のサイトって、ガラケーのフルブラウザだとログインもできない糞サイトだわ」 とかネットで言われると困るだろうし。
295 名前:nobodyさん mailto:sage [2013/11/19(火) 14:15:18.76 ID:???] >>289 そこそこ有名なPHPのフレームワークにそんな基本的な脆弱性があるなら、大垣氏あたりが騒いでるよ。
296 名前:nobodyさん mailto:sage [2013/11/19(火) 14:48:00.13 ID:???] >>295 もちろん知ってる。>>284 と>>288 を皮肉ったんだよ、
297 名前:nobodyさん mailto:sage [2013/11/19(火) 15:30:48.92 ID:???] >>288 の話ってPHPの脆弱性の話じゃないだろ、常識だろ?
298 名前:nobodyさん mailto:sage [2013/11/19(火) 15:39:16.53 ID:???] gihyo.jp/dev/serial/01/php-security/0042
299 名前:nobodyさん mailto:sage [2013/11/19(火) 15:49:48.19 ID:???] >>295 quoteだけでは防げない問題を見つけてつぶしていってくれてるんだよ。
300 名前:nobodyさん mailto:sage [2013/11/19(火) 15:55:45.62 ID:???] www.tokumaru.org/d/20100701.html 昔のMySQLみたいなprepareがクライアントサイドで処理とかゴミな実装されてると prepareのほうが脆弱性の巣窟になりかねない。 この場合、徳丸氏や大垣氏が騒ぐから問題はいつか解決される
301 名前:nobodyさん mailto:sage [2013/11/19(火) 16:05:50.48 ID:???] 今htmlフォームのradio,cheakbox,selectを使ってphpにポストしています ポストしたデータ類はdbやcsvに書き込んだり保存したりするわけでもなく switch($_POST["color"]) { case "red":return imageColorAllocateAlpha($i,200,200,200,$alpha);break; ~~~~~~ default:return imagecolorallocate($i,255,255,255,$alpha);break; } で最終的に変な物が飛んできてもdefaultで処理されると思うんですがセキュリティ的にこれ$_POSTを正規表現やstrlenで弾くべきですか?
302 名前:nobodyさん mailto:sage [2013/11/19(火) 16:09:44.47 ID:???] >>301 大丈夫
303 名前:nobodyさん mailto:sage [2013/11/19(火) 16:12:49.08 ID:???] >>302 ありがとうございます。。
304 名前:nobodyさん mailto:sage [2013/11/19(火) 16:17:55.45 ID:???] >>301 一応、問題ない。 ただ、不正な値をエラーとして弾くと、ログから変な操作をする奴を突き止めやすい。
305 名前:nobodyさん mailto:sage [2013/11/19(火) 17:47:12.58 ID:???] 自分はpost値をひと通りチェックして処理入る前に 想定外のものがあったらexitして真っ白にして不気味感を演出したり headerでbad requestあたりを返すと思う
306 名前:nobodyさん mailto:sage [2013/11/19(火) 18:06:18.79 ID:???] 俺は大抵302でヤフーにお任せするわ
307 名前:nobodyさん mailto:sage [2013/11/19(火) 20:51:48.38 ID:???] headerにbad request(400)なんてあるんだね。 余談だが、404にすべきページをエラーページに飛ばしてたら ソフト404とかで注意されたよ。
308 名前:nobodyさん mailto:sage [2013/11/19(火) 20:54:19.28 ID:???] >>307 ステータスを404にしないからだな
309 名前:nobodyさん mailto:sage [2013/11/19(火) 21:10:38.01 ID:???] うわー自前で正規表現やらintvalだの使ってvalidationしてたけどfilterなんてあったのか
310 名前:nobodyさん mailto:sage [2013/11/19(火) 21:14:07.64 ID:???] <?php header("HTTP/1.0 404 Not Found"); header("Location: www.example.com/error/" ); こんな感じにしたら、なぜか、最初のヘッダーは無視されて、 結局、302でのリダイレクトになっちゃうから404を出すのは諦めたんだけど。 404出してから更にエラーページに遷移するのは無理っぽい。 fiddlerでステータスコードを確認した限りの話だが。
311 名前:nobodyさん mailto:sage [2013/11/19(火) 21:14:29.22 ID:???] >>309 FilterとCtypeは重要
312 名前:nobodyさん mailto:sage [2013/11/19(火) 21:15:39.77 ID:???] >>310 そりゃだめだろ リダイレクト先で404出さないと
313 名前:nobodyさん mailto:sage [2013/11/19(火) 21:17:35.20 ID:???] >>310 それおかしいだろ リダイレクト先のそのURLで404を返すようにしなさいよ
314 名前:nobodyさん mailto:sage [2013/11/19(火) 21:18:06.73 ID:???] リロードしてなかったのごめんね
315 名前:310 [2013/11/19(火) 21:37:04.47 ID:XtFCM7Hl] まじですか・・・。 いや、エラーページは200を返す普通のページにしてたんだけど。 もちろん、存在しないページ用の404ページ(ヘッダー404)は別に用意してるんだけど。 つーか、むしろエラーページに飛ばさないで、素直に404ページに飛ばせばいいのか。
316 名前:310 [2013/11/19(火) 21:42:44.27 ID:XtFCM7Hl] 普通、エラーページも404ヘッダーを出すものなのですか?
317 名前:nobodyさん mailto:sage [2013/11/19(火) 21:49:59.72 ID:???] エラーページで404が必要なときは404 厳密には200を返す必要があるときはない
318 名前:nobodyさん mailto:sage [2013/11/19(火) 21:54:36.62 ID:???] 404 FOT FOUNDとかechoしておいて200返してるのはかなりかっこ悪いとは思う
319 名前:310 [2013/11/19(火) 22:48:57.12 ID:9JiWXD43] レスありがとうございます。 どうも頭が混乱してしまいました。 こうすれば大丈夫でしょうか? POSTパラメーターが不正 → エラーページ (200ステータス: echo ”リクエストが不正です”) GETパラメーターが不正か不存在 → 404ページ (404ステータス: echo ”ページが存在しません”) GETパラメーターの場合に、エラーページに飛ばしていたのが、 ソフト404の原因だと思うのです。
320 名前:nobodyさん mailto:sage [2013/11/19(火) 23:00:34.26 ID:???] >>319 RFC2616か、WikipediaのHTTPステータスコードでもいいから読んで どういう時にどれを使えばいいか分かるから
321 名前:nobodyさん mailto:sage [2013/11/19(火) 23:04:02.90 ID:???] パラメーターの問題じゃない hoge.phpというファイルは存在しているんだから404を返すのは不自然
322 名前:310 [2013/11/19(火) 23:29:26.30 ID:9JiWXD43] >>320 ご指摘に従い、HTTPステータスコード等について調べてみます。 >>321 mod_rewriteで、GETパラメーターを静的URLに書き換えてリンクとして活用しているのですが、 この場合もhoge.phpは存在するとみなされるのでしょうか? (例)ttp:example.com/hoge/2013/11/29 9999とか不正な値がきたら、404に飛ばせばいいかなと思ったのですが。 わかりづらい説明ですみません。
323 名前:nobodyさん mailto:sage [2013/11/19(火) 23:44:52.18 ID:???] mod_rewriteでやってもアプリケーション側で弾かない限り 実質的にはhoge.php?y=2013&m=11&d=29みたいな感じで見れると思うけど hoge.phpが存在するというのを表向きに知られたくないのなら好きにすればいいんじゃね 目的とか実装によりけりだよそのへんは
324 名前:nobodyさん mailto:sage [2013/11/19(火) 23:51:53.10 ID:???] >>322 ファイルがあろうがなかろうが、そのURLを存在させたくなければ404でよい > (例)ttp:example.com/hoge/2013/11/29 > 9999とか不正な値がきたら、404に飛ばせばいいかなと思ったのですが。 404が適切。
325 名前:nobodyさん mailto:sage [2013/11/19(火) 23:59:01.39 ID:???] ブログ記事を表示するページのurlが example.com/post/ブログ記事のid だとして、存在しないidだったときは404返してたんだけど間違ってる?
326 名前:310 [2013/11/20(水) 00:10:19.19 ID:VLPy2k85] >>323 >>324 (例)ttp:example.com/hoge/2013/11/29 結論として、このurlの不正な値の場合に、200のエラーページに飛ばしていたのがソフト404の原因ですよね。 ご指摘くださったことを参考に、もう一度、ページの構成と遷移、 ステータスコードの関係について検証したいと思います。 ありがとうございました。
327 名前:nobodyさん mailto:sage [2013/11/20(水) 00:31:49.62 ID:???] >>325 あってる
328 名前:nobodyさん mailto:sage [2013/11/20(水) 07:53:07.64 ID:???] 訳もわからず404や403を返しちゃうのは恥ずかしいよね。 自分で書いてるスクリプトなのにw 400と500のどちらかを返すだけの方が無難だよねw
329 名前:nobodyさん mailto:sage [2013/11/20(水) 08:01:27.90 ID:???] >>328 君は存在してることが恥ずかしい
330 名前:nobodyさん mailto:sage [2013/11/20(水) 09:35:19.42 ID:???] >>328 httpステータスコードでググってこい
331 名前:nobodyさん [2013/11/20(水) 11:28:24.00 ID:35fCUlou] 通常、ファイルが存在しない場合に備えて、.htaccessに次の様な設定をすると思います。 ErrorDocument 404 /error/404.php(404ヘッダーを出力) ここから質問です。 次のURLのid値が不正な場合、404となるよう、同様に、/error/404.php に遷移できますか? ttp://example.com/post/id header('Location: ttp://example.com/error/404.php'); post.phpで出すこのヘッダーは302ですが、遷移すれば、結果として404扱いになるのでしょうか?
332 名前:nobodyさん mailto:sage [2013/11/20(水) 11:33:09.19 ID:???] その 404.php は何を返すの?
333 名前:331 [2013/11/20(水) 11:36:20.51 ID:35fCUlou] >>332 オリジナルに作成した、いわゆる404ページです。 もしかしたら、(404ヘッダーを出力) という部分は間違いかもです。
334 名前:nobodyさん mailto:sage [2013/11/20(水) 11:57:47.58 ID:???] UAがリダイレクトを許可する設定なら404 そうでないなら302 不安ならPHP側で処理に合わせてheaderとresponse返すようにすればおk
335 名前:nobodyさん mailto:sage [2013/11/20(水) 12:22:36.67 ID:???] >>331 Locationは「リソースの別の場所を案内する」ために用いられるもの 「リソースが見つからない」場合の挙動は定義されていない 各ベンダーの実装は404とLocationを一緒に出すと無視される よって include('error/404.php'); 等とするしかない
336 名前:331 [2013/11/20(水) 12:41:10.58 ID:35fCUlou] >>334 >>335 ありがとうございます。 header("HTTP/1.0 404 Not Found"); このヘッダー出力だけで、自動で遷移する、ErrorDocument 404 と 同様の効果があると良いのですが、どうも無理なようですね。 <?php //idチェック処理後不正な場合 header("HTTP/1.0 404 Not Found"); include('error/404.php'); exit; やはり、こうして読み込むしかないということですね。 ありがとうございました。
337 名前:nobodyさん mailto:sage [2013/11/20(水) 12:43:47.50 ID:???] 404.php側でヘッダに404を出せよというだけじゃね?w
338 名前:nobodyさん mailto:sage [2013/11/20(水) 12:48:58.33 ID:???] >>337 ソフト404エラーでググれ
339 名前:nobodyさん mailto:sage [2013/11/20(水) 17:14:42.69 ID:???] >>337 だよね >>338 ?
340 名前:nobodyさん mailto:sage [2013/11/20(水) 17:32:58.48 ID:???] >>337 404.phpに移動していいならそれでいいね。 ただ、.htaccessにErrorDocument設定をしたのと同じ振る舞いを希望するなら、その手じゃ駄目なんじゃ。
341 名前:nobodyさん mailto:sage [2013/11/20(水) 17:55:26.35 ID:???] 変な質問ですみません。 最近転職してPHPを触るようになったのですが、Linux上のvimで開発しています。 開発時にインデントをある程度入れると思うのですが、普通はどのようにインデントを 入れるのが正しいソースの書き方なんでしょうか? 今触っているソースは特に改行やTABインデントがなく、そのまま1行でずっと 書かれてあり可読性としてどうなのかなと思いつつも、そういうルールかもしれないと思い 自分も特にインデント等を入れずに開発しているのですが。。 わかりにくい書き方で申し訳ありませんが、どなたか教えて頂けないでしょうか
342 名前:nobodyさん mailto:sage [2013/11/20(水) 17:57:19.88 ID:???] 難読化してんのかね? 整形して編集してリリース時にまた改行消す、とかでいいんじゃ?
343 名前:nobodyさん mailto:sage [2013/11/20(水) 17:58:27.74 ID:???] コーディング規約ないならご自由に 後で自分が追うことになっても苦労しない程度にね
344 名前:nobodyさん mailto:sage [2013/11/20(水) 18:00:00.26 ID:???] >>337 >>339 次の文は正しい?それとも間違い? 『転送元で302を出しても、転送先で404を出せば「ソフト404」にならない』
345 名前:nobodyさん mailto:sage [2013/11/20(水) 18:00:42.18 ID:???] >>341 インデント、改行の入れ方はいろいろある www.infiniteloop.co.jp/docs/psr/psr-2-coding-style-guide.html ja.phptherightway.com/ のコーディングスタイル いろいろあってどれが正しいとかはないが、会社やプロダクトでどうなっているか次第 一行に書くのがルールですって言われたら会社辞めちゃいそう
346 名前:nobodyさん mailto:sage [2013/11/20(水) 18:01:44.56 ID:???] >>344 Googleの話だよな?ソフト404って 正しいよ。ただ転送は301がオススメ
347 名前:nobodyさん mailto:sage [2013/11/20(水) 18:05:42.61 ID:???] >>346 そうGoogleの話。 理解できた。ありがとう!
348 名前:nobodyさん mailto:sage [2013/11/20(水) 18:05:59.79 ID:???] >>342-343 パッと見た時に「読みにくい」と思ったのが最初です 例えば $hoge = array('aaa' => $aaa, 'bbb' => $bbb); のようなものがあったとして(実際はもっと多いです) $hoge = array ( 'aaa' => $aaa, 'bbb' => $bbb ); のように書いた方が後で見た時に読みやすいと思いまして。。 >>345 資料の方ありがとうございます。 そちらを見てみます。
349 名前:nobodyさん mailto:sage [2013/11/20(水) 18:07:21.19 ID:???] >>341 それって最終的にそうしてるってだけで、 編集用のコメントが入ってたりインデントもちゃんと入ってるソースが別にあるでしょ? つうか会社に人に聞きなさいよ。
350 名前:nobodyさん [2013/11/20(水) 18:08:46.70 ID:7VTPw3qr] 変なこと聞きますが、base64_encodeでダブルクオーテーションが 含まれる文字列に変換されることってありえませんよね?
351 名前:nobodyさん mailto:sage [2013/11/20(水) 18:11:55.88 ID:???] インデント、手で入れてるんですか?
352 名前:nobodyさん mailto:sage [2013/11/20(水) 18:13:31.78 ID:???] >>350 ないと思うけど
353 名前:nobodyさん mailto:sage [2013/11/20(水) 18:14:21.21 ID:???] >>341 インデントはスペース4つが普通。 いろんな文法チェッカーツールも、デフォルトではタブでインデントしてると警告を出すのが多い。
354 名前:nobodyさん mailto:sage [2013/11/20(水) 18:17:04.21 ID:???] >>349 ないんです 聞いてみたら「昔からこうだった」らしいので。 そういうものなのかなと少し疑問に思って質問しました。すみません >>353 TABじゃないらしいですね。 >>345 さんの教えてくれたページを見て驚きました スレ汚し申し訳なかったです
355 名前:nobodyさん [2013/11/20(水) 18:17:34.09 ID:7VTPw3qr] >>352 ですよね。CSVファイルに保存するとき、base64_encodeして保存してるのですが、 たまにダブルクォーテーションが余分についてファイルが壊れている事があります。 原因が全くわからないので、バグを見つけられずに困っていました。 他の原因を探ってみます。
356 名前:nobodyさん mailto:sage [2013/11/20(水) 18:19:19.18 ID:???] >>354 PHPのインデントはスペース派が多いけど どっちでもいいよ。会社やプロダクトで決められたほうを使うべきかな
357 名前:nobodyさん mailto:sage [2013/11/20(水) 18:20:47.24 ID:???] >>356 PSR-2がスペース使うのがMUSTだから、どっちでもいいならスペース使っといた方がいい。
358 名前:nobodyさん mailto:sage [2013/11/20(水) 18:43:18.00 ID:???] >>341 vimの設定ちょこちょこしておけばインデントは勝手にやってくれるよ。 インデントを入れずに書くのはやめといたほうが。
359 名前:nobodyさん mailto:sage [2013/11/20(水) 18:56:19.40 ID:???] >>354 やべえなその会社w お前が引っ張っていってやれ
360 名前:nobodyさん mailto:sage [2013/11/20(水) 19:11:37.50 ID:???] >>357 PSR-2に従うならだな 従うかはMUSTではないからな うちはPSR-1までは従ってるけど、コーディングスタイルは全然違うな
361 名前:nobodyさん mailto:sage [2013/11/20(水) 19:29:19.34 ID:???] >>346 いい加減な事を教えないでくれ 301はリソースが一時的に別の場所に「ある」時に使う ソフト404エラーは404を返すべきところで「404を返さない」事を指す
362 名前:nobodyさん mailto:sage [2013/11/20(水) 19:45:20.59 ID:???] >>361 違うよ、まず301は恒久的だぞ、一時的は302 301にしろ302にしろ、リソースが新しいURIに移動したことを示す。 404はURIに一致するリソースが見つけられない、リソースはあるがリクエストを拒否したい等々 移動させることは勝手だし、リソースのあるなしは関係ない。 >ソフト404エラーは404を返すべきところで「404を返さない」事を指す その通りだが、そのURIを301にしてその先で404を返すのは勝手。 その場で404を返そうがどっちでも良い 返せるならその場の方が好ましいとは言えるかもしれない
363 名前:nobodyさん [2013/11/20(水) 19:48:23.17 ID:ZNkS7nHy] PHPで重複組合せを簡単にやるにはどうしたらよいでしょうか? もし関数やライブラリがあれば教えてください。 無ければサンプルコードを教えてください。よろしくお願いします。
364 名前:nobodyさん [2013/11/20(水) 19:52:53.93 ID:ZNkS7nHy] 補足です。 仮に、[1, 2, 3, 4, 5] の5つから3つ選び出す場合、 $result = [ [1, 1, 1], [1, 1, 2], [1, 1, 3], [1, 1, 4], [1, 1, 5], [1, 2, 2], [1, 2, 3], [1, 2, 4], [1, 2, 5], ... ... [1, 5, 5], [2, 2, 2], [2, 2, 3], [2, 2, 4], [2, 2, 5], [2, 3, 3], [2, 3, 4], [2, 3, 5], ... ... ... ... [5, 5, 5] ]; このように出力したいです。
365 名前:nobodyさん mailto:sage [2013/11/20(水) 20:08:13.76 ID:???] PHPマニュアルが変わった?
366 名前:nobodyさん mailto:sage [2013/11/20(水) 20:10:39.68 ID:???] 変わった
367 名前:nobodyさん mailto:sage [2013/11/20(水) 20:39:38.18 ID:???] >>362 > 違うよ、まず301は恒久的だぞ、一時的は302 ごめん、俺が取り間違えてる > 404はURIに一致するリソースが見つけられない、リソースはあるがリクエストを拒否したい等々 > 移動させることは勝手だし、リソースのあるなしは関係ない。 404は適当な理由による拒否として使うコードではない (RFC 2616#10.4.5) 拒否する理由に合わせて400、401、403、406等が用意されている > その場で404を返そうがどっちでも良い > 返せるならその場の方が好ましいとは言えるかもしれない Googleが決めたソフト404エラーを回避する義務がないのは同意するけど 無いものを無いと知っててクライアントに教えないのはHTTPサーバーとして行儀が悪い 今回のケースではPHPで対応できるのだから404を返すべき。この点は譲れん
368 名前:nobodyさん mailto:sage [2013/11/20(水) 20:59:29.17 ID:???] >>364 $a = [1, 2, 3, 4, 5]; print_r (combine($a,3)); function combine($a, $n) { if($n==1) return $a; $result = array(); foreach ($a as $v1) foreach (($n==2?$a:combine($a,$n-1)) as $v2) $result[] = array_merge((array)$v1, (array)$v2); return $result; }
369 名前:nobodyさん mailto:sage [2013/11/20(水) 21:02:06.21 ID:???] >>367 10.4.5 This status code is commonly used when the server does not wish to reveal exactly why the request has been refused, or when no other response is applicable. 書いてあるよ。 >無いものを無いと知っててクライアントに教えないのはHTTPサーバーとして行儀が悪い 301と404のセットで教えてるから良いんだよ 301を返さずに404の方が好ましいかもしれない。だがMUSTじゃないし問題なし
370 名前:nobodyさん mailto:sage [2013/11/20(水) 21:25:52.44 ID:???] >>369 > 10.4.5 それは404の説明ではなく commonly used な 「リクエストを拒否する理由を隠したい、適当なものがない時にも使われている」という使用例だ ソフト404エラーの話とはまた違う > 301と404のセットで教えてるから良いんだよ だから選択ではなくセットで使えという事が ソフト404エラーに該当するしHTTPサーバーとしての振る舞いとしても良くないと言ってるんだ
371 名前:nobodyさん mailto:sage [2013/11/20(水) 21:31:48.37 ID:???] まだやってたのか