トップページ⇒php
1001コメント298KB

【PHP】下らねぇ質問はID出して書き込みやがれ 131

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2013/11/10(日) 15:46:09.34ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 130
http://kohada.2ch.net/test/read.cgi/php/1379566039/

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0268nobodyさん2013/11/18(月) 23:39:32.18ID:???
>>267
そもそもなんでPHPスレだと思ったの?
0269nobodyさん2013/11/18(月) 23:53:32.87ID:???
>>234
それはそのサイトの管理者問い合わせしたほうがいいんじゃね?
連絡がつくなら修正してくれるんじゃね?
0270nobodyさん2013/11/19(火) 00:24:28.55ID:???
>>266
プリペアドステートメントの他の使い方って?
0271nobodyさん2013/11/19(火) 01:02:24.07ID:???
>>270
プリペアすることだろ
0272nobodyさん2013/11/19(火) 10:43:34.31ID:???
PHPがレベル低いって思われる最たるものが大手のFWでprepare使わずに、自前やquoteメソッドで対応してる例があることだ
0273nobodyさん2013/11/19(火) 10:54:41.60ID:???
そういうのをPHPガーって言うのが恥ずかしくない頭なんだろうな。
0274nobodyさん2013/11/19(火) 11:09:09.11ID:???
>>273
これに関しては仕方ないんじゃないか
FuelPHPとかあそこらへんも終わってたような
0275nobodyさん2013/11/19(火) 11:57:37.76ID:???
個別のソフトの問題や、使ってる人の問題を、言語自体の問題にすり替えて仕方ないと言ってるから、
あおりのレベルが低いんだよな。
0276nobodyさん2013/11/19(火) 12:16:10.14ID:???
使えないFWが多いのはちょっと問題だとは思うけどなー
使ってる人の問題だけど、そういうFWを推してる人はどうにかならんかな
0277nobodyさん2013/11/19(火) 12:17:54.87ID:???
下見て暮らしてる奴だからしょうがない
0278nobodyさん2013/11/19(火) 12:18:57.84ID:???
>>277は>>275に対してね
0279nobodyさん2013/11/19(火) 12:20:03.73ID:???
FWなら結局、CakePHPがいいよね。
0280nobodyさん2013/11/19(火) 12:28:14.36ID:???
よくない
0281nobodyさん2013/11/19(火) 12:30:37.60ID:???
CakePHPは日本と日本のオフショア先だけまだまだ盛んだな
0282nobodyさん2013/11/19(火) 12:39:02.32ID:???
fuelは出た手の頃、ormがPrepare使ってなくて使うのやめたんだが
今も治ってないの?
0283nobodyさん2013/11/19(火) 12:53:02.64ID:hKBGRur1
>>282
http://fuelphp.jp/docs/1.6/general/security.html#sql
0284nobodyさん2013/11/19(火) 13:15:30.92ID:???
>>283
ダメではないか
0285nobodyさん2013/11/19(火) 13:17:38.96ID:???
私JKで試したわけぢゃないけどーprepare+bindXxxって
query+quoteに比べて処理工数が多いだけに遅そうだしー
ただでさえ遅いFWの速度をあげるには仕方ないのでゎ
0286nobodyさん2013/11/19(火) 13:21:29.56ID:???
>>285
そんなんボトルネックにならん
0287nobodyさん2013/11/19(火) 13:23:36.67ID:???
ちっちゃいのが積み重なると大きくなるけどね
0288nobodyさん2013/11/19(火) 13:24:21.74ID:???
>>284
一昔前の文字コードやエスケープ処理での脆弱性を知らないんだろうし

シングルバイト系の人は知らない人多いし
0289nobodyさん2013/11/19(火) 13:37:06.01ID:hKBGRur1
>>284 >> 288
だめなの?
fuelphpてSQLインジェクション防げないんだ…
これはオワコンだわ
0290nobodyさん2013/11/19(火) 13:49:33.19ID:???
>>289
基本的には防げてるし、新たに発見された脆弱性も継続して修正されてる。
http://fuelphp.com/security-advisories

「プリペアードステートメントを使ってないからSQLインジェクションの脆弱性がある」というのはFUD。
とはいえ、プリペアードステートメント使えやとは思うけどね。
0291nobodyさん2013/11/19(火) 13:57:50.15ID:???
SQLインジェクションは、Prepare使わないと防げないわけではない。
そもそもでいえば、インジェクション防止の機構じゃねーし。
SQLの機構じゃなくて、ライブラリのラッパなので、仕様によっては
使っていても問題ないというわけではない。
0292nobodyさん2013/11/19(火) 13:58:01.02ID:???
>>285
クエリを実行するとき、データベースサーバでは、
1. 構文解析
2. 実行計画立案
3. クエリ実行
の処理が必要で、prepareでは1または1&2が行われる。(構文のみで実行計画を立てて固定する場合と、3で渡された
パラメータをもとに実行計画を立てる場合がある)
一方、exec queryでは毎回1〜3が行われる。
なので、同じ処理をパラメータを変えながら複数回実行する場合、プリペアードステートメントを使った方が速い場合がある。
0293nobodyさん2013/11/19(火) 14:08:35.69ID:???
レスありがとうございます
>>268
PHPが何なのか解らず、単にネットプログラムの質問スレで質問させて頂きました

>>269
大手企業サイトなので厳しいですね

ど素人ながら、ログインボタンのURLとかPCでログイン後のURLとか試したんですが、無理でした
0294nobodyさん2013/11/19(火) 14:12:15.36ID:???
>>293
> 大手企業サイトなので厳しいですね
大手こそ対応してくれそうなもんだが。
「○○のサイトって、ガラケーのフルブラウザだとログインもできない糞サイトだわ」
とかネットで言われると困るだろうし。
0295nobodyさん2013/11/19(火) 14:15:18.76ID:???
>>289
そこそこ有名なPHPのフレームワークにそんな基本的な脆弱性があるなら、大垣氏あたりが騒いでるよ。
0296nobodyさん2013/11/19(火) 14:48:00.13ID:???
>>295
もちろん知ってる。>>284と>>288を皮肉ったんだよ、
0297nobodyさん2013/11/19(火) 15:30:48.92ID:???
>>288の話ってPHPの脆弱性の話じゃないだろ、常識だろ?
0298nobodyさん2013/11/19(火) 15:39:16.53ID:???
http://gihyo.jp/dev/serial/01/php-security/0042
0299nobodyさん2013/11/19(火) 15:49:48.19ID:???
>>295
quoteだけでは防げない問題を見つけてつぶしていってくれてるんだよ。
0300nobodyさん2013/11/19(火) 15:55:45.62ID:???
http://www.tokumaru.org/d/20100701.html

昔のMySQLみたいなprepareがクライアントサイドで処理とかゴミな実装されてると
prepareのほうが脆弱性の巣窟になりかねない。

この場合、徳丸氏や大垣氏が騒ぐから問題はいつか解決される
0301nobodyさん2013/11/19(火) 16:05:50.48ID:???
今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で弾くべきですか?
0302nobodyさん2013/11/19(火) 16:09:44.47ID:???
>>301
大丈夫
0303nobodyさん2013/11/19(火) 16:12:49.08ID:???
>>302
ありがとうございます。。
0304nobodyさん2013/11/19(火) 16:17:55.45ID:???
>>301
一応、問題ない。
ただ、不正な値をエラーとして弾くと、ログから変な操作をする奴を突き止めやすい。
0305nobodyさん2013/11/19(火) 17:47:12.58ID:???
自分はpost値をひと通りチェックして処理入る前に
想定外のものがあったらexitして真っ白にして不気味感を演出したり
headerでbad requestあたりを返すと思う
0306nobodyさん2013/11/19(火) 18:06:18.79ID:???
俺は大抵302でヤフーにお任せするわ
0307nobodyさん2013/11/19(火) 20:51:48.38ID:???
headerにbad request(400)なんてあるんだね。
余談だが、404にすべきページをエラーページに飛ばしてたら
ソフト404とかで注意されたよ。
0308nobodyさん2013/11/19(火) 20:54:19.28ID:???
>>307
ステータスを404にしないからだな
0309nobodyさん2013/11/19(火) 21:10:38.01ID:???
うわー自前で正規表現やらintvalだの使ってvalidationしてたけどfilterなんてあったのか
0310nobodyさん2013/11/19(火) 21:14:07.64ID:???
<?php
header("HTTP/1.0 404 Not Found");
header("Location: http://www.example.com/error/";);

こんな感じにしたら、なぜか、最初のヘッダーは無視されて、
結局、302でのリダイレクトになっちゃうから404を出すのは諦めたんだけど。
404出してから更にエラーページに遷移するのは無理っぽい。
fiddlerでステータスコードを確認した限りの話だが。
0311nobodyさん2013/11/19(火) 21:14:29.22ID:???
>>309
FilterとCtypeは重要
0312nobodyさん2013/11/19(火) 21:15:39.77ID:???
>>310
そりゃだめだろ
リダイレクト先で404出さないと
0313nobodyさん2013/11/19(火) 21:17:35.20ID:???
>>310
それおかしいだろ
リダイレクト先のそのURLで404を返すようにしなさいよ
0314nobodyさん2013/11/19(火) 21:18:06.73ID:???
リロードしてなかったのごめんね
03153102013/11/19(火) 21:37:04.47ID:XtFCM7Hl
まじですか・・・。
いや、エラーページは200を返す普通のページにしてたんだけど。
もちろん、存在しないページ用の404ページ(ヘッダー404)は別に用意してるんだけど。
つーか、むしろエラーページに飛ばさないで、素直に404ページに飛ばせばいいのか。
03163102013/11/19(火) 21:42:44.27ID:XtFCM7Hl
普通、エラーページも404ヘッダーを出すものなのですか?
0317nobodyさん2013/11/19(火) 21:49:59.72ID:???
エラーページで404が必要なときは404

厳密には200を返す必要があるときはない
0318nobodyさん2013/11/19(火) 21:54:36.62ID:???
404 FOT FOUNDとかechoしておいて200返してるのはかなりかっこ悪いとは思う
03193102013/11/19(火) 22:48:57.12ID:9JiWXD43
レスありがとうございます。
どうも頭が混乱してしまいました。
こうすれば大丈夫でしょうか?

POSTパラメーターが不正 → エラーページ
(200ステータス: echo ”リクエストが不正です”)

GETパラメーターが不正か不存在 → 404ページ
(404ステータス: echo ”ページが存在しません”)

GETパラメーターの場合に、エラーページに飛ばしていたのが、
ソフト404の原因だと思うのです。
0320nobodyさん2013/11/19(火) 23:00:34.26ID:???
>>319
RFC2616か、WikipediaのHTTPステータスコードでもいいから読んで
どういう時にどれを使えばいいか分かるから
0321nobodyさん2013/11/19(火) 23:04:02.90ID:???
パラメーターの問題じゃない
hoge.phpというファイルは存在しているんだから404を返すのは不自然
03223102013/11/19(火) 23:29:26.30ID:9JiWXD43
>>320
ご指摘に従い、HTTPステータスコード等について調べてみます。

>>321
mod_rewriteで、GETパラメーターを静的URLに書き換えてリンクとして活用しているのですが、
この場合もhoge.phpは存在するとみなされるのでしょうか?
(例)ttp:example.com/hoge/2013/11/29
9999とか不正な値がきたら、404に飛ばせばいいかなと思ったのですが。

わかりづらい説明ですみません。
0323nobodyさん2013/11/19(火) 23:44:52.18ID:???
mod_rewriteでやってもアプリケーション側で弾かない限り
実質的にはhoge.php?y=2013&m=11&d=29みたいな感じで見れると思うけど
hoge.phpが存在するというのを表向きに知られたくないのなら好きにすればいいんじゃね
目的とか実装によりけりだよそのへんは
0324nobodyさん2013/11/19(火) 23:51:53.10ID:???
>>322
ファイルがあろうがなかろうが、そのURLを存在させたくなければ404でよい

> (例)ttp:example.com/hoge/2013/11/29
> 9999とか不正な値がきたら、404に飛ばせばいいかなと思ったのですが。
404が適切。
0325nobodyさん2013/11/19(火) 23:59:01.39ID:???
ブログ記事を表示するページのurlが
example.com/post/ブログ記事のid
だとして、存在しないidだったときは404返してたんだけど間違ってる?
03263102013/11/20(水) 00:10:19.19ID:VLPy2k85
>>323 >>324
(例)ttp:example.com/hoge/2013/11/29
結論として、このurlの不正な値の場合に、200のエラーページに飛ばしていたのがソフト404の原因ですよね。

ご指摘くださったことを参考に、もう一度、ページの構成と遷移、
ステータスコードの関係について検証したいと思います。
ありがとうございました。
0327nobodyさん2013/11/20(水) 00:31:49.62ID:???
>>325
あってる
0328nobodyさん2013/11/20(水) 07:53:07.64ID:???
訳もわからず404や403を返しちゃうのは恥ずかしいよね。
自分で書いてるスクリプトなのにw
400と500のどちらかを返すだけの方が無難だよねw
0329nobodyさん2013/11/20(水) 08:01:27.90ID:???
>>328
君は存在してることが恥ずかしい
0330nobodyさん2013/11/20(水) 09:35:19.42ID:???
>>328
httpステータスコードでググってこい
0331nobodyさん2013/11/20(水) 11:28:24.00ID: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扱いになるのでしょうか?
0332nobodyさん2013/11/20(水) 11:33:09.19ID:???
その 404.php は何を返すの?
03333312013/11/20(水) 11:36:20.51ID:35fCUlou
>>332
オリジナルに作成した、いわゆる404ページです。

もしかしたら、(404ヘッダーを出力) という部分は間違いかもです。
0334nobodyさん2013/11/20(水) 11:57:47.58ID:???
UAがリダイレクトを許可する設定なら404
そうでないなら302
不安ならPHP側で処理に合わせてheaderとresponse返すようにすればおk
0335nobodyさん2013/11/20(水) 12:22:36.67ID:???
>>331
Locationは「リソースの別の場所を案内する」ために用いられるもの
「リソースが見つからない」場合の挙動は定義されていない
各ベンダーの実装は404とLocationを一緒に出すと無視される
よって include('error/404.php'); 等とするしかない
03363312013/11/20(水) 12:41:10.58ID: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;

やはり、こうして読み込むしかないということですね。
ありがとうございました。
0337nobodyさん2013/11/20(水) 12:43:47.50ID:???
404.php側でヘッダに404を出せよというだけじゃね?w
0338nobodyさん2013/11/20(水) 12:48:58.33ID:???
>>337
ソフト404エラーでググれ
0339nobodyさん2013/11/20(水) 17:14:42.69ID:???
>>337
だよね

>>338
?
0340nobodyさん2013/11/20(水) 17:32:58.48ID:???
>>337
404.phpに移動していいならそれでいいね。
ただ、.htaccessにErrorDocument設定をしたのと同じ振る舞いを希望するなら、その手じゃ駄目なんじゃ。
0341nobodyさん2013/11/20(水) 17:55:26.35ID:???
変な質問ですみません。

最近転職してPHPを触るようになったのですが、Linux上のvimで開発しています。
開発時にインデントをある程度入れると思うのですが、普通はどのようにインデントを
入れるのが正しいソースの書き方なんでしょうか?

今触っているソースは特に改行やTABインデントがなく、そのまま1行でずっと
書かれてあり可読性としてどうなのかなと思いつつも、そういうルールかもしれないと思い
自分も特にインデント等を入れずに開発しているのですが。。

わかりにくい書き方で申し訳ありませんが、どなたか教えて頂けないでしょうか
0342nobodyさん2013/11/20(水) 17:57:19.88ID:???
難読化してんのかね?
整形して編集してリリース時にまた改行消す、とかでいいんじゃ?
0343nobodyさん2013/11/20(水) 17:58:27.74ID:???
コーディング規約ないならご自由に
後で自分が追うことになっても苦労しない程度にね
0344nobodyさん2013/11/20(水) 18:00:00.26ID:???
>>337 >>339
次の文は正しい?それとも間違い?
『転送元で302を出しても、転送先で404を出せば「ソフト404」にならない』
0345nobodyさん2013/11/20(水) 18:00:42.18ID:???
>>341
インデント、改行の入れ方はいろいろある
http://www.infiniteloop.co.jp/docs/psr/psr-2-coding-style-guide.html
http://ja.phptherightway.com/
のコーディングスタイル
いろいろあってどれが正しいとかはないが、会社やプロダクトでどうなっているか次第

一行に書くのがルールですって言われたら会社辞めちゃいそう
0346nobodyさん2013/11/20(水) 18:01:44.56ID:???
>>344
Googleの話だよな?ソフト404って
正しいよ。ただ転送は301がオススメ
0347nobodyさん2013/11/20(水) 18:05:42.61ID:???
>>346
そうGoogleの話。
理解できた。ありがとう!
0348nobodyさん2013/11/20(水) 18:05:59.79ID:???
>>342-343
パッと見た時に「読みにくい」と思ったのが最初です
例えば

 $hoge = array('aaa' => $aaa, 'bbb' => $bbb);

のようなものがあったとして(実際はもっと多いです)

 $hoge = array
          (
           'aaa' => $aaa,
           'bbb' => $bbb
          );

のように書いた方が後で見た時に読みやすいと思いまして。。

>>345
資料の方ありがとうございます。
そちらを見てみます。
0349nobodyさん2013/11/20(水) 18:07:21.19ID:???
>>341
それって最終的にそうしてるってだけで、
編集用のコメントが入ってたりインデントもちゃんと入ってるソースが別にあるでしょ?
つうか会社に人に聞きなさいよ。
0350nobodyさん2013/11/20(水) 18:08:46.70ID:7VTPw3qr
変なこと聞きますが、base64_encodeでダブルクオーテーションが
含まれる文字列に変換されることってありえませんよね?
0351nobodyさん2013/11/20(水) 18:11:55.88ID:???
インデント、手で入れてるんですか?
0352nobodyさん2013/11/20(水) 18:13:31.78ID:???
>>350
ないと思うけど
0353nobodyさん2013/11/20(水) 18:14:21.21ID:???
>>341
インデントはスペース4つが普通。
いろんな文法チェッカーツールも、デフォルトではタブでインデントしてると警告を出すのが多い。
0354nobodyさん2013/11/20(水) 18:17:04.21ID:???
>>349
ないんです
聞いてみたら「昔からこうだった」らしいので。
そういうものなのかなと少し疑問に思って質問しました。すみません

>>353
TABじゃないらしいですね。
>>345さんの教えてくれたページを見て驚きました

スレ汚し申し訳なかったです
0355nobodyさん2013/11/20(水) 18:17:34.09ID:7VTPw3qr
>>352
ですよね。CSVファイルに保存するとき、base64_encodeして保存してるのですが、
たまにダブルクォーテーションが余分についてファイルが壊れている事があります。
原因が全くわからないので、バグを見つけられずに困っていました。

他の原因を探ってみます。
0356nobodyさん2013/11/20(水) 18:19:19.18ID:???
>>354
PHPのインデントはスペース派が多いけど
どっちでもいいよ。会社やプロダクトで決められたほうを使うべきかな
0357nobodyさん2013/11/20(水) 18:20:47.24ID:???
>>356
PSR-2がスペース使うのがMUSTだから、どっちでもいいならスペース使っといた方がいい。
0358nobodyさん2013/11/20(水) 18:43:18.00ID:???
>>341
vimの設定ちょこちょこしておけばインデントは勝手にやってくれるよ。
インデントを入れずに書くのはやめといたほうが。
0359nobodyさん2013/11/20(水) 18:56:19.40ID:???
>>354
やべえなその会社w
お前が引っ張っていってやれ
0360nobodyさん2013/11/20(水) 19:11:37.50ID:???
>>357
PSR-2に従うならだな
従うかはMUSTではないからな

うちはPSR-1までは従ってるけど、コーディングスタイルは全然違うな
0361nobodyさん2013/11/20(水) 19:29:19.34ID:???
>>346
いい加減な事を教えないでくれ
301はリソースが一時的に別の場所に「ある」時に使う
ソフト404エラーは404を返すべきところで「404を返さない」事を指す
0362nobodyさん2013/11/20(水) 19:45:20.59ID:???
>>361
違うよ、まず301は恒久的だぞ、一時的は302
301にしろ302にしろ、リソースが新しいURIに移動したことを示す。
404はURIに一致するリソースが見つけられない、リソースはあるがリクエストを拒否したい等々
移動させることは勝手だし、リソースのあるなしは関係ない。

>ソフト404エラーは404を返すべきところで「404を返さない」事を指す
その通りだが、そのURIを301にしてその先で404を返すのは勝手。
その場で404を返そうがどっちでも良い
返せるならその場の方が好ましいとは言えるかもしれない
0363nobodyさん2013/11/20(水) 19:48:23.17ID:ZNkS7nHy
PHPで重複組合せを簡単にやるにはどうしたらよいでしょうか?
もし関数やライブラリがあれば教えてください。
無ければサンプルコードを教えてください。よろしくお願いします。
0364nobodyさん2013/11/20(水) 19:52:53.93ID: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]
];

このように出力したいです。
0365nobodyさん2013/11/20(水) 20:08:13.76ID:???
PHPマニュアルが変わった?
0366nobodyさん2013/11/20(水) 20:10:39.68ID:???
変わった
0367nobodyさん2013/11/20(水) 20:39:38.18ID:???
>>362
> 違うよ、まず301は恒久的だぞ、一時的は302
ごめん、俺が取り間違えてる

> 404はURIに一致するリソースが見つけられない、リソースはあるがリクエストを拒否したい等々
> 移動させることは勝手だし、リソースのあるなしは関係ない。
404は適当な理由による拒否として使うコードではない (RFC 2616#10.4.5)
拒否する理由に合わせて400、401、403、406等が用意されている

> その場で404を返そうがどっちでも良い
> 返せるならその場の方が好ましいとは言えるかもしれない
Googleが決めたソフト404エラーを回避する義務がないのは同意するけど
無いものを無いと知っててクライアントに教えないのはHTTPサーバーとして行儀が悪い
今回のケースではPHPで対応できるのだから404を返すべき。この点は譲れん
■ このスレッドは過去ログ倉庫に格納されています