Php 尝试运行';HTTP#u X#u FORWARDED#u FOR';时出现未定义的索引错误

Php 尝试运行';HTTP#u X#u FORWARDED#u FOR';时出现未定义的索引错误,php,Php,我试图打印超全局变量$\u SERVER['HTTP\u X\u FORWARDED\u']来测试我网站的代理阻止程序。打开文件时,服务器返回以下错误: 注意:未定义索引:第2行的in/Applications/XAMPP/xamppfiles/htdocs/test/test.php中的HTTP_X_FORWARDED_ 这是文件中的内容: <?php echo $_SERVER['HTTP_X_FORWARDED_FOR']; ?> 有什么问题吗?那个变量不可打印吗?当您不

我试图打印超全局变量
$\u SERVER['HTTP\u X\u FORWARDED\u']
来测试我网站的代理阻止程序。打开文件时,服务器返回以下错误:

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

这是文件中的内容:

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

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


提前感谢。

所有
$\u服务器
前缀为
HTTP的变量表示从客户端收到的HTTP头

始终存在的唯一HTTP头是主机,因此。。。对于其他内容,您必须首先检查它是否存在。

使用

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

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

当代理转发未正确执行时,将出现此错误。你能分享更多的信息吗

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

仅供参考:如果环境变量不存在,getenv将返回
FALSE

From的可能重复:
您可能在$\u服务器中找到以下任何元素,也可能找不到。请注意,如果在命令行上运行PHP,其中很少(如果有的话)可用(或者确实有任何意义)。
if ($forwarded = getenv('HTTP_X_FORWARDED_FOR')) {
    echo $forwarded;
}