当前位置:  开发笔记 > 编程语言 > 正文

如何在PHP Web服务中获取客户端的IP地址?

如何解决《如何在PHPWeb服务中获取客户端的IP地址?》经验,为你挑选了4个好方法。

我开发了一个PHP Web服务.我想记录使用此Web服务的WS客户端的所有传入连接.如何获取客户端的IP地址?的价值

$_SERVER['HTTP_CLIENT_IP']
好像总是空着的.



1> Tom Haigh..:

这应该是你想要的:

$_SERVER['REMOTE_ADDR']

用户正在查看当前页面的IP地址.

http://php.net/manual/en/reserved.variables.server.php


不再投票没有运气

2> bgcode..:

实际上,我建议使用此功能来涵盖所有基础,例如使用代理,共享网络等的人:

function getUserIpAddr()
{
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) //if from shared
    {
        return $_SERVER['HTTP_CLIENT_IP'];
    }
    else if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))   //if from a proxy
    {
        return $_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else
    {
        return $_SERVER['REMOTE_ADDR'];
    }
}


通过发送假的X-Forwarded-For标头可以很容易地欺骗它!

3> Emil Vikströ..:

确保不要信任从客户端发送的数据.$_SERVER['REMOTE_ADDR']包含连接方的真实IP地址.这是您可以找到的最可靠的价值.

但是,它们可能位于代理服务器后面,在这种情况下代理可能已经设置了$_SERVER['HTTP_X_FORWARDED_FOR'],但这个值很容易被欺骗.它可以由没有代理的人设置为用户想要的任何值,或者IP可以是来自代理后面的LAN的内部IP.

这意味着如果要保存$_SERVER['HTTP_X_FORWARDED_FOR'],请确保也保存该$_SERVER['REMOTE_ADDR']值,例如,将两个值保存在数据库的不同字段中.

如果要将IP保存为数据库作为字符串,请确保至少有45个字符的空间.IPv6将保留,并且这些地址大于旧的IPv4地址.



4> 小智..:

函数getUserIpAddr()和getRealIpAddr()不可靠!

唯一可靠的IP来自于$ip = $_SERVER["REMOTE_ADDR"]; 其他任何人都可以通过发送CLIENT_IP标头伪造他的IP地址.

这个Firefox插件可以帮助您发送自定义标头.将CLIENT_IP = xxxx标头发送到运行此页面上任何功能的服务器,意味着客户可以选择他们想要的任何IP ...

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有