教程集 www.jiaochengji.com
教程集 >  脚本编程  >  php  >  正文 php取得服务器IP地址[非代理]的方法

php取得服务器IP地址[非代理]的方法

发布时间:2016-04-27   编辑:jiaochengji.com
本文介绍下,在php中取得服务器Ip地址的方法,非代理的情况,有需要的朋友参考下。

在php中,一般通过$_SERVER['HTTP_HOST']来活得URL中网站的域名或者ip地址。

在php手册中的解释:

“HTTP_HOST”
当前请求的 Host: 头信息的内容。

在一些常见的php框架中,如PFC3和FLEA也是基于该预定义变量。

不过最近遇到一个问题,不能准确得到服务器的Ip地址。
原因:$_SERVER['HTTP_HOST']在客户的环境里,取得的值总是程序所在的服务器在其局域网内的ip值。
由于客户的公司通过一台服务器连接至因特网,而程序所在的服务器,是通过域名映射出来的,也就是中间有个“代理”的过程。

因此$_SERVER['HTTP_HOST']在这样的环境里,取得的值总是程序所在的服务器在其局域网内的ip值。

最后在symfony框架中找到替代的实现方法:

 

复制代码 代码示例:
$host = $_SERVER['HTTP_HOST'];
 

替换成:
 

复制代码 代码示例:
$host = isset($_SERVER['HTTP_X_FORWARDED_HOST']) ? $_SERVER['HTTP_X_FORWARDED_HOST'] : (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '');

然后,问题就解决了,可以获得真实的IP地址了。

您可能感兴趣的文章:
php获取远程客户端真实ip地址
php取得服务器IP地址[非代理]的方法
深入解析PHP获取客户端IP的方法
php获取ip的多种方法
获取客户端的真实ip地址的php实现方法与原理
php获取客户端的真实IP的方法介绍
使用PHP来获取客户端和服务端IP
PHP通过IP获取地理位置的代码
获取用户真实IP地址的php代码
php 获取网站地址的函数代码

[关闭]
~ ~