2017-02-25 36 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

全部$_SERVER前缀为HTTP_的变量表示您从客户端收到的HTTP标头。

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

0

使用

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

要检查变量是否试图访问它

0

当代理前没有正确完成,这个错误会ocurr之前就存在。你能分享更多的信息吗?

此外,我会建议使用GETENV方法,如果VAR存在检查之前(双方的条件和分配可以if语句里面写):

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

FYI:如果GETENV返回FALSE环境var不存在。

相关问题