2017-02-25 10 views
2

私のウェブサイトのプロキシブロッカーをテストするために、スーパーグローバル変数$_SERVER['HTTP_X_FORWARDED_FOR']を印刷しようとしました。

Notice: Undefined index: HTTP_X_FORWARDED_FOR in /Applications/XAMPP/xamppfiles/htdocs/test/test.php on line 2

これは、ファイル内にあるものである:

<?php 
echo $_SERVER['HTTP_X_FORWARDED_FOR']; 
?> 

問題は何ですか私は、ファイルを開くと、サーバーは、このエラーを返しますか?その変数は印刷できませんか?変数を定義していないときには、エラーが表示されるようです。

ありがとうございます。

+0

可能な複製http://stackoverflow.com/questions/11452938/how-to-use-http-x-forwarded-for-properly – Naincy

+0

[PHP doc](https://secure.php.net/)からreserved.variables.server): '$ _SERVERには、以下の要素があります。コマンドラインでPHPを実行している場合、これらのファイルがある場合は、ほとんど存在しないことに注意してください。 – Manulaiko

答えて

1

という接頭辞が付いた変数はすべて、クライアントから受信したHTTPヘッダーを表します。

常に存在する唯一のHTTPヘッダーはHostです。他のすべての場合は、最初に存在するかどうかを確認する必要があります。

0

使用

if(array_key_exists("HTTP_X_FORWARDED_FOR", $_SERVER)) 

は、変数は、プロキシ前方が正しく行われていない場合、それは

0

このエラーがocurrますアクセスしようとする前に存在しているかどうかを確認します。もっと情報を共有できますか?

varが存在する場合(両方を、条件および割り当てはif文の内側に書き込むことができます)また、私はのgetenv方法を使用することをお勧めしますし、前にチェック:FYI

if ($forwarded = getenv('HTTP_X_FORWARDED_FOR')) { 
    echo $forwarded; 
} 

FALSE場合を返すのgetenv環境変数は存在しません。

関連する問題