当前位置:首页 > 日记 > 正文

PHP5例分析与实现代码,获取客户端的真实IP地址

PHP5例分析与实现代码,获取客户端的真实IP地址
_server美元{remote_addr常常用在PHP获取客户端IP }。

(1)但是,如果客户端使用代理服务器来访问它,它采取的是代理服务器的IP地址,而不是真正的客户端IP地址,通过代理服务器获取客户端真实IP地址,_server美元{http_x_forwarded_for}是用来读取。

(2)只有当客户端使用透明代理,为_server {http_x_forwarded_for 是客户端真实IP的价值。如果它是一个多层代理,该值可以由客户端的真正IP和多个代理服务器的IP组成,由逗号分隔。

(3)在匿名代理或欺骗代理的情况下,它是代理服务器的IP值。如果是多代理,该值可以由多个代理服务器的IP组成,用逗号分隔。

(4)在高匿名代理的情况下,它是空值。

至于在HTTP头信息remote_addr和http_forwarded_for值,分析如下,假设客户端真实IP是221.5.252.160:

首先,不要使用代理服务器的PHP来获取客户机IP情况:

复制代码如下:remote_addr = 221.5.252.160

http_via =不是数字或不显示

http_x_forwarded_for =没有价值或没有显示

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

复制代码如下:remote_addr =最后的代理服务器IP

http_via =代理服务器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_via =代理服务器IP

http_x_forwarded_for =代理服务器IP(当通过多个代理服务器,这个值是相似的:203.98.182.163,203.98.182.163,203.129.72.215)

在这种情况下,客户机的真正IP被隐藏,但它被显示给访问对象,客户机正在使用代理服务器访问它们。

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

复制代码代码如下:remote_addr =代理服务器IP

http_via =代理服务器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_via =不是数字或不显示

http_x_forwarded_for =没有价值或没有显示。

无论remote_addr或http_forwarded_for,这些头信息可能无法得到它,因为不同的浏览器会发送不同的IP报头信息,不同的网络设备。所以用PHP使用$ _server {remote_addr}得到的值_server美元{http_x_forwarded_for}可以是空值或未知的价值。

PHP获取客户端IP的另一点是注意利用函数getenv('http_x_forwarded_for)或getenv('remote_addr)也可以达到同样的效果的代码。但getenv()不支持在IIS的ISAPI模式运行PHP。

remote_addr是IP时,你的客户握手服务器。如果一个匿名代理使用,remote_addr将显示代理服务器的IP。

http_client_ip由代理服务器发送的HTTP头。如果它是一个超级匿名代理,无返回值。以同样的方式,remote_addr将由代理服务器IP更换。

_server美元{ 'remote_addr}; / /接入终端(有可能是用户,有可能是IP代理)

_server美元{ 'http_client_ip}; / /代理(可能伪造)

_server美元{ 'http_x_forwarded_for}; / /在用户正在使用的IP代理(可能存在,可以锻造)

PHP代码编写如下案例:

复制代码代码如下所示:

< PHP

功能getip(){

未知的=未知的;

如果(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'} {;

}

}

>

相关文章

word2003排版:如何实现双线路一

word2003排版:如何实现双线路一

如何实现,电脑软件,使用word2003排版时,你可以使用很多的排版效果,如下面的给你;双线和的效果。这种效果可以在一行行文字,还有一行字显示,是不是很新!让我们看看如何一起做。 首先打开word文档窗口,然后选择,需要双线一节; 菜单栏的格式是中文>格式…

站在十字路口,我不知道怎么走。

站在十字路口,我不知道怎么走。

十字路,站在,不知道怎么,电脑软件,想看透整个海,却更想看透你的心。 不,我生命的前半段与我保密。 我不会做山寨版的。 我要反射阳光灿烂的颜色,露出假装的微笑)。 别人的爱我不抄,请不要忘得太快。 如果不是时间,我们不会见面,现在不是时间,…

PHP将十进制转换为3个整数。

PHP将十进制转换为3个整数。

十进制,整数,转换为,电脑软件,PHP,浮动地板(浮点数)舍入舍入法 返回的值不超过整数的值,舍入舍入的值分数。 将代码复制为以下内容:回声层(4.3);4 回音地板(9.999/9); 浮动(float值)进入细胞的舍入方法 返回下一个整数,不低于价值,价值如果有小数部分…

利用mysql命令还原数据库备份的方

利用mysql命令还原数据库备份的方

命令,方法,数据库备份,电脑软件,mysql,本文介绍了一些常用的导入和导出数据的MySQL命令。只要我们掌握这些命令,我们就可以快速备份和恢复数据库。 MySQL数据导入和导出500MB数据 问题:需要将500米的数据库表数据导入到新数据库中。 首先…

PHP读取txt文件的内容并将代码分配

PHP读取txt文件的内容并将代码分配

读取,数组,文件,并将,代码,对2010-12-15.txt内容如下: 复制代码代码如下所示: 01 02 03 04 05 06 07 08 09 十 十一 十二 十三 十四 十五 十六 十七 十八 十九 二十 二十一 二十二 二十三 二十四 T01 T02 T03 T04 T05 型号: T07 T08 T09 T10 T…

ThinkPHPC方法举例

ThinkPHPC方法举例

方法,电脑软件,ThinkPHPC,1 C法的作用 A.负载设置用户的配置,这是存储在一个静态变量_config美元在C函数 B.读取用户的配置(从$ _congig读) 2。需求分析: 1。设置变量 1。二维数组 复制代码代码如下所示: C(阵列('db_password= > 'root ',…

关于MySQL的优化

关于MySQL的优化

优化,电脑软件,MySQL,首先,说最常见的基本系统瓶颈: 1、硬盘搜索。现代磁盘的平均时间通常小于10ms,因此在理论上,我们可以搜索1000次,所以它是我们搜索一个数据盘困难等。一种方法是在多个磁盘上分发数据。 2、IO读写。至于盘而言,10-20mb /的普…

共享有线网络,实现了Win7手机上网过

共享有线网络,实现了Win7手机上网过

网络,手机上网,实现了,过程,电脑软件,点评:如果你想要win7共享有线网络实现互联网,你需要两个命令来实现它。下面有一个很好的教程,你可以参考它。 win7创建临时网络的使用,计算机到计算机,所以不支持手机连接,移动互联网。 如果你想要win7共享有…

Oracle数据库中常用的99种查询语句

Oracle数据库中常用的99种查询语句

查询语句,数据库中,常用,电脑软件,Oracle,1。从EMP中选择*; 2。选择编号、姓名,工作从EMP; 三.选择empno,ename的名字,从EMP工作; 4。从EMP中选择作业; 5。从EMP中选择不同的作业; 6。选择不同的编号、工作从EMP; 说明:由于员工编号没有重复,证明…

修改Linux用户密码

修改Linux用户密码

修改,用户密码,电脑软件,用户密码修改,Linux,评论:对于初学者来说,如何修改Linux用户密码并不是一件容易的事情,其实很简单,下面的例子说明了: 如果您以root身份登录,请修改root密码。刚进入 口令 将会有: 新的密码: 重新输入新密码: 根据提示输入密…

键盘故障解决方案

键盘故障解决方案

故障解决,方案,键盘,电脑软件,点评:在日食进入ubuntu10.04系统。结果表明键盘键盘出现无效输入字符后不能失败,但在其他地方,还可以输入,点击任何地方返回eclipse并激活,很快就死了,本文将提供一个完整的解决方案,需要的朋友可以参考下一个。 进…

完美解决方案:Apache启动问题(OS1002

完美解决方案:Apache启动问题(OS1002

无效,解决方案,启动,参数,完美,今天,启动Apache2无法启动的时候,认为这是一个港口的问题,但没有看到端口占用问题,所以看到错误日志如下: { 2009 } {在6月20日03:12:52通知} Apache / 2.2.11(Win32)PHP / 5.2.9-2配置恢复正常运营 { 2009 } {在6月…