4

私のMVCフレームワークでは、フォームの送信後にリダイレクトすることがあります。フォームを/example/inputに投稿するとします。

PHPで適切なヘッダーコードと説明テキストを追加したいheader('HTTP/1.1 404 Not Found');

1)入力にエラーが含まれています。/ example / inputページにとどまり、エラーなどでマークアップされたフォームを再度取得します。どのHTTP1.1。コードとテキストは、これでリダイレクト命令を送信するのに適切なものでしょうか?

2)入力に問題がなく、要素が保存され、Header('Location: ...')/ example/successにリダイレクトされます。どのHTTP1.1。ここではコードとテキストが適切ですか?

3)PHPコードは、設定の誤り、インクルードファイルの欠落、データベース接続の破損、またはその他の問題が原因でエラーをスローします。どのHTTP1.1。ここではコードとテキストが適切ですか?

ここでコードを確認しました:http ://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html 番号200は1)に正しく表示され、番号301/302は2)に正しく表示され、番号500は3)。しかし、3つのケースすべてで、上記のリンクのコードに続くタイトル/説明は、上記で説明したシナリオに正確に適合していないことがわかりました。他のコード/テキストを選択する必要がありますか?

4

2 に答える 2

5

ケース1と2は、同じ状況の変形を説明しています。POSTでフォームを送信すると、サーバーがそれを処理し、クライアントを成功ページにリダイレクトするか、フォームに戻します。どちらの場合も、「303SeeOther」が正しい応答です。これは、サーバーがPOSTリクエストを正しく処理した後、GETメソッドを使用してクライアントをリソースにリダイレクトする正しい方法です。仕様によると:

このメソッドは主に、POSTでアクティブ化されたスクリプトの出力で、ユーザーエージェントを選択したリソースにリダイレクトできるようにするために存在します。

ケース3の場合、500コードは通常、最も重大なエラーに適しています。

于 2012-07-22T04:34:09.010 に答える
1

私の理解では、PHPが正常に実行された場合、200コードは正しいです。したがって、1と2の面倒を見る必要があります。

3の場合、致命的なエラーが発生した場合、PHPはすでに500コードを送信しています。

2をもう少し説明すると、300は、リソースが要求されたURLに配置されなくなった場合に使用されます。したがって、それらを新しい場所または正しい場所にリダイレクトします。あなたの場合、リソースはそこにあるので、300コードは必要ありません。

于 2012-07-22T04:07:22.183 に答える