使用未定义的常量http_x_forwarded_for

时间:2012-12-17 07:12:19

标签: php

这是我的代码:

if (getenv(HTTP_X_FORWARDED_FOR))
{
    $pipaddress = getenv(HTTP_X_FORWARDED_FOR);
    $ipaddress = getenv(REMOTE_ADDR);
}
else
{
    $ipaddress = getenv(REMOTE_ADDR);
}

我收到此错误:

use of undefined constant http_x_forwarded_for-assumed http_x_forwarded_for

我不知道实际问题是什么。帮帮我

3 个答案:

答案 0 :(得分:4)

你将常量传递给getenv(),这实际上需要一个字符串。

更改为:

if (getenv('HTTP_X_FORWARDED_FOR'))

它与常量一起工作的原因是因为PHP无法找到常量,然后发出你看到的警告,然后使用常量名称作为字符串回退。

来自Manual

  

string getenv(string $ varname)

答案 1 :(得分:2)

将它放在单引号中

getenv('HTTP_X_FORWARDED_FOR')

答案 2 :(得分:2)

将参数引用到getenv

getenv('HTTP_X_FORWARDED_FOR');

否则php认为你传递了一个常数。

http://sg2.php.net/getenv

string getenv ( string $varname )需要一个字符串。

除非您先前将HTTP_X_FORWARDED_FOR定义为字符串,否则我认为这不符合您的意图。