尝试运行$ _SERVER时出现未定义的索引错误[' HTTP_X_FORWARDED_FOR']

时间:2017-02-25 12:31:49

标签: php

我正在尝试打印超全局变量$_SERVER['HTTP_X_FORWARDED_FOR'],以便为我的网站测试代理阻止程序。当我打开文件时,服务器返回此错误:

  

注意:未定义的索引:第2行/Applications/XAMPP/xamppfiles/htdocs/test/test.php中的HTTP_X_FORWARDED_FOR

这就是文件中的内容:

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

问题是什么?那个变量是不可打印的?当您没有定义变量时,似乎出现错误。

提前致谢。

3 个答案:

答案 0 :(得分:1)

前缀为$_SERVER的所有HTTP_个变量代表您从客户端收到的HTTP标头。

唯一始终存在的HTTP标头是Host,因此......对于其他所有内容,您必须先检查它是否存在。

答案 1 :(得分:0)

使用

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

在尝试访问变量之前检查变量是否存在

答案 2 :(得分:0)

当代理转发未正确完成时,此错误将发生。你能分享更多信息吗?

另外我建议使用 getenv 方法并检查var是否存在(两者,条件和分配都可以写在if语句中):

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

fyi:如果环境变量不存在,getenv将返回FALSE