ブラウザーがヘッダー情報をサーバーに送信すると、$_SERVER['HTTP_REFERER']
は直前のページURLを正しく表示するはずですか?
ヘッダー情報がサーバーに送信されない場合、$_SERVER['HTTP_REFERER']
から何が返されますか?空の文字列ですか?偽ですか?ヌル?または...?
ブラウザーがヘッダー情報をサーバーに送信すると、$_SERVER['HTTP_REFERER']
は直前のページURLを正しく表示するはずですか?
ヘッダー情報がサーバーに送信されない場合、$_SERVER['HTTP_REFERER']
から何が返されますか?空の文字列ですか?偽ですか?ヌル?または...?
HTTPリファラー要求ヘッダーが送信されない場合は、空の文字列になる可能性がありますが、$_SERVER['HTTP_REFERER']
はおそらく設定されていません。この場合に設定されるかどうかは、サーバーによって異なる場合があります。読み取り時に
すべてのHTTPリクエストヘッダと同じように、その存在を確認:
$httpReferer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null;
$_SERVER['HTTP_REFERER']
は、ユーザーブラウザの特定の設定が問題になる可能性があるため、実際には信頼できません。しかし、はい、以前のURLを含める必要がありますし、ヘッダーが送信されていない場合、サーバーの構成に応じて空の文字列またはNULLを返します。
$ _SERVERは、グローバル配列変数で、リファラ値は、キーHTTP_REFERERを持つ配列の要素です。リファラーヘッダーがブラウザによって送信されない場合、要素は単に配列から欠落しています。配列に要素があるかどうかは、array_key_existsで確認できます。この場合:それは設定されていないとき
array_key_exists('HTTP_REFERER', $_SERVER)
値がnullまたはundefinedのどちらかになります。
代替は
$_SERVER['REDIRECT_URL']
'$ _SERVER ['HTTP_REFERER']'の代わりに$ _SERVER ['REDIRECT_URL'] 'がありません。これら2つの変数は全く異なる情報を保持しています。 'REDIRECT_URL'は、内部書き換えがあったときの_current要求_(_referring要求_ではなく)の元のURLパスです。これは_server_によって設定され、_browser_では設定されません。 (一般的な使用例は、サーバーのエラー文書をトリガーした要求に関する情報を取得することです)。 – MrWhite
使用 'のvar_dump($ _サーバー)'を使用して自分のために見ることになります。 – Barmar