可能重复:
How do I find a user's IP address with PHP?PHP - 获取公网IP
我有我的PHP页面的表单。用户填写他的凭证和消息并按下发送。我通过电子邮件得到他的问题,并可以回答他。
但是我也想把这个人的公共IP加入到邮件中,这可能吗?
非常感谢!
可能重复:
How do I find a user's IP address with PHP?PHP - 获取公网IP
我有我的PHP页面的表单。用户填写他的凭证和消息并按下发送。我通过电子邮件得到他的问题,并可以回答他。
但是我也想把这个人的公共IP加入到邮件中,这可能吗?
非常感谢!
尝试使用$_SERVER['REMOTE_ADDR']
来获取用户的IP地址。
在我的本地网站上,我得到127.0.0.1。我无法在我的本地网站上获得我的公共IP。 – 2012-09-07 09:40:23
您可以使用下面的代码:
$ip = $REMOTE_ADDR;
你不应该依靠注册全局变量来开启。 – 2011-06-08 22:04:29
我认为这需要'register_globals' – 2011-06-08 22:04:53
您可以使用$_SERVER["REMOTE_ADDR"]
。但它不一定可靠。
我不知道任何欺骗REMOTE_ADDR锻造IP数据包的方法。但是,值得注意的是,REMOTE_ADDR可能是代理的地址(即使是你自己设置的),而不是远程用户。例如,我在npache前面有nginx,所以apache收到的REMOTE_ADDR就是我的nginx服务器。 – 2011-06-08 22:06:22
@Frank:这大概是我暗示的! – 2011-06-08 22:07:45
您可以使用$_SERVER['REMOTE_ADDR']
但如果你真的想确保你得到正确的IP,而不是代理IP,然后我发现这个功能是有帮助的
注:我不是这个代码的拥有者,我发现它在互联网上的某处
function get_real_ip()
{
if (isset($_SERVER["HTTP_CLIENT_IP"]))
{
return $_SERVER["HTTP_CLIENT_IP"];
}
elseif (isset($_SERVER["HTTP_X_FORWARDED_FOR"]))
{
return $_SERVER["HTTP_X_FORWARDED_FOR"];
}
elseif (isset($_SERVER["HTTP_X_FORWARDED"]))
{
return $_SERVER["HTTP_X_FORWARDED"];
}
elseif (isset($_SERVER["HTTP_FORWARDED_FOR"]))
{
return $_SERVER["HTTP_FORWARDED_FOR"];
}
elseif (isset($_SERVER["HTTP_FORWARDED"]))
{
return $_SERVER["HTTP_FORWARDED"];
}
else
{
return $_SERVER["REMOTE_ADDR"];
}
}
是的,请让这些代码片段流行起来,这样很容易欺骗邮件脚本。 – hakre 2011-06-08 22:16:22
所有'$ _SERVER [“HTTP _ *”]'变量都是微不足道的。 – 2011-06-08 22:21:10
有效的点,但真正的工作是什么?我个人保存'$ _SERVER [“REMOTE_ADDR”]'和任何其他转发类型var我可以找到。 – 2011-06-08 22:29:07
你为什么要这样做? – 2011-06-08 22:02:45