使用PHP获取用户IP地址的最可靠方法是什么?

4

可能重复:
使用PHP获取用户真实IP地址

我想通过一个php脚本记录访问我的网站的任何人的ip地址,以防止可能的垃圾邮件发送者。是否有一种可靠的方法来查找和记录任何人的真实IP地址?

更新:我的网站只要求用户输入密码即可登录,无需用户名。如果我想保持当前的验证方法,还可以使用哪些方法来阻止或阻止大多数垃圾邮件发送者?


1
$_SERVER['REMOTE_ADDR'],你无法通过IP可靠地阻止垃圾邮件发送者。 - user557846
2个回答

15

在 PHP 中查找真实 IP 地址的函数

function getRealIpAddr()
{
    if (!empty($_SERVER['HTTP_CLIENT_IP']))   //check ip from share internet
    {
      $ip=$_SERVER['HTTP_CLIENT_IP'];
    }
    elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))   //to check ip is pass from proxy
    {
      $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else
    {
      $ip=$_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}

来源:- http://roshanbh.com.np/2007/12/getting-real-ip-address-in-php.html


2
请注意,X-Forwarded-For可能是一个逗号+空格分隔的IP列表,而不仅仅是一个IP地址:http://en.wikipedia.org/wiki/X-Forwarded-For#Format - Fanis Hatzidakis
这不是非常危险吗?http_x_forwared可以被客户端修改,还是坚持使用$_SERVER['REMOTE_ADDR']吧。 - Gokigooooks

1

正如Dagon所说,$_SERVER ['REMOTE_ADDR'],至少在使用Apache时是这样的。

但是再说一遍,它已经记录在Apache日志中了。


我还能做什么来阻止或屏蔽大多数垃圾邮件发送者? - user701510
reCAPTCHA?需要Facebook登录(并且仅接受至少有10个好友的人)?这只是我脑海中浮现的一些事情。 - jcomeau_ictx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接