PHP准确取得服务器IP地址的方法

本文实例讲述了PHP准确取得服务器IP地址的方法。分享给大家供大家参考。具体分析如下:
在php中,我们一般通过$_SERVER[‘HTTP_HOST’]来活得URL中网站的域名或者ip地址。
php手册中的解释如下:

“HTTP_HOST”

当前请求的 Host: 头信息的内容。
一般来说,这样子不会遇到什么问题,在一些常见的php框架中,如PFC3和FLEA也是基于该预定义变量。
然而最近在做的一个项目,程序移交到客户手里测试时,竟然发现程序的跳转总是会出错。
最后找出原因: S E R V E R [ ′ H T T P H O S T ′ ] 在 客 户 的 环 境 里 , 取 得 的 值 总 是 程 序 所 在 的 服 务 器 在 其 局 域 网 内 的 i p 值 。 究 其 原 因 , 是 因 为 , 客 户 的 公 司 通 过 一 台 服 务 器 连 接 至 因 特 网 , 而 我 们 的 程 序 所 在 的 服 务 器 , 是 通 过 域 名 映 射 出 来 的 , 也 就 是 中 间 有 个 “ 代 理 ” 的 过 程 。 因 此 _SERVER['HTTP_HOST']在客户的环境里,取得的值总是程序所在的服务器在其局域网内的ip值。 究其原因,是因为,客户的公司通过一台服务器连接至因特网,而我们的程序所在的服务器,是通过域名映射出来的,也就是中间有个“代理”的过程。 因此 SERVER[HTTPHOST]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'] : '');

复制代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值