PHP解决用户客户机真正IP的解决方案

PHP解决用户客户机真正IP的解决方案
获取客户端IP不是一项简单的工作,因为存在IP欺骗和代理问题,所以获得客户端的IP真实性会大打折扣,而不是100%准确。但是我们仍然试图找到一个完美的客户端来获得真正的IP。用PHP获取ip的方法可以找到很多。
功能getip(){
如果(getenv(http_client_ip )strcasecmp(getenv(http_client_ip ),未知))
为IP = getenv(http_client_ip );
如果(getenv(http_x_forwarded_for )strcasecmp(getenv(http_x_forwarded_for ),未知)))
为IP = getenv(http_x_forwarded_for );
如果(getenv(remote_addr )strcasecmp(getenv(remote_addr ),未知)))
为IP = getenv(remote_addr );
else if(isset($ _server { 'remote_addr ' }){ } _server美元的'remote_addr strcasecmp(_server { } 'remote_addr美元,未知))
IP = _server美元美元'remote_addr'} {;
其他的
$未知;
返回(IP);
现在我们需要解释这个代码。这里我们使用getenv()和两个函数strcasecmp(),前一个函数获取系统环境变量,如果我们能得到的价值,我们的价值回归,我们不能返回假..

_server美元是服务器超级全局变量数组,美元和_server { 'remote_addr}也可以获得IP地址的客户端。两者的区别是,getenv不支持PHP。在IIS的ISAPI模式运行

的用法(strcasecmp string1,string2)字符串函数是比较string1和string2的平等,如果返回0,如果string1大于string2,返回大于0的数,小于然后返回小于0。

The function first uses the customer IP, if not the method of trying to use the agent, if not, then use REMOTE_ADDR.

您还看到了一个更详细的IP检测方法,考虑到IP欺骗和多代理代码。方法是相似的。
功能getip(){
未知的'unknown美元=;
如果(isset($ _server { 'http_x_forwarded_for ' }){ } _server美元的'http_x_forwarded_for strcasecmp(_server 'http_x_forwarded_for'} {美元,美元未知)){
IP = _server美元美元'http_x_forwarded_for'} {;
} elseif(isset($ _server { 'remote_addr ' }){ } _server美元的'remote_addr strcasecmp(_server 'remote_addr'} {美元,美元未知)){
IP = _server美元美元'remote_addr'} {;
}
*
处理多层代理
或使用常规方式:IP = preg_match美元( / { D 。} { 7、15 } /
* /
如果(假)!= strpos($ IP))
$ =重置(爆炸(,,IP));
返回ip;
}
首先,不要使用代理服务器的PHP来获取客户机IP情况

remote_addr =客户端IP

http_x_forwarded_for =没有价值或没有显示

两。使用透明代理服务器的情况:透明代理

remote_addr =最后的代理服务器IP

http_x_forwarded_for =客户端真实IP(由多个代理服务器,这个值是相似的:221.5.252.160,203.98.182.163,203.129.72.215)

这种代理服务器也将客户端的真实IP发送给访问对象,不能隐藏真实身份。

三。使用普通匿名代理服务器的PHP获得客户端IP情况:匿名代理

remote_addr =最后的代理服务器IP

http_x_forwarded_for =代理服务器IP(当通过多个代理服务器,这个值是相似的:203.98.182.163,203.98.182.163,203.129.72.215)
在这种情况下,客户机的真正IP被隐藏,但它被显示给访问对象,客户机正在使用代理服务器访问它们。

四。使用欺骗性代理服务器:篡改代理

remote_addr =代理服务器IP

http_x_forwarded_for =随机IP(由多个代理服务器,这个值是相似的:220.4.251.159,203.98.182.163,203.129.72.215)

在这种情况下,它也表明,客户端使用代理服务器,但发明了一种伪随机的IP(220.4.251.159)而不是客户端的真实IP欺骗。

五,使用高匿名代理服务器的PHP获得客户端IP情况:高匿名代理(精英代理)

remote_addr =代理服务器IP

http_x_forwarded_for =没有价值或没有显示

无论是remote_addr或http_forwarded_for,新闻的头可能无法实现,因为不同的网络设备不同的浏览器会发送不同的IP报文头。所以_server美元{remote_addr 使用PHP,_server美元{http_x_forwarded_for}采集值可以是空的或未知的值。

以上是PHP向您介绍的一种解决方案,以获得用户客户机的真正IP。希望能对你有所帮助。如果你有任何问题,请给我留言,萧边会及时给您回复。谢谢您支持网站
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部