2

などのヘッダー関数を介してステータスコードを送信していますheader('HTTP/1.1 403');が、コードの別の領域で、送信するステータスコードを検出したいと考えています(特に、何らかのエラーコードを送信した場合)。他の場所で言及されているように、headers_list()はこの特定のアイテムを返しません。FirebugもFiddler2もヘッダーで処理しないため、実際にヘッダーとしてカウントされるかどうかはわかりません。では、PHPスクリプトは、どのステータスコードがブラウザに送信されようとしているのかをどのように検出できますか?

ヘッダーメソッドの周りにラッパー関数(またはオブジェクト)を使用したり、ステータスコードの送信とともにグローバル変数を設定したりすることは避けたいと思います。また、パフォーマンス上の懸念から、curlなどを使用してコード自体から呼び出すことは避けたいと思います。ご意見をお聞かせください。

4

3 に答える 3

2

定数を設定することを検討してください。

define('HTTP_STATUS', 403);

defined後で関数を使用します。

if(defined('HTTP_STATUS') && HTTP_STATUS == 403) // ...or whatever you're looking to do

実際には、ヘッダー自体をのぞき見するのは、文字列や配列、その他のあらゆる種類の厄介なデータを処理しているだけなので、それ自体が一種のハックです。単純な定数を自分で設定します。これは非常に高速で、同じことを実行し、「真の」グローバル変数を作成しません。

于 2010-01-10T23:20:53.550 に答える
1

http_response_code()PHP5.4ではこれを実行します。

于 2011-08-30T22:03:23.220 に答える
0

別の呼びかけですが、最後の手段として、カールではなくこれを使用できます。php 5.0をお持ちの場合、get_headers()はどうですか?

于 2010-01-08T22:13:22.293 に答える