PHP准确取得服务器IP地址的方法
本文实例讲述了PHP准确取得服务器IP地址的方法。分享给大家供大家参考。具体分析如下:
在php中,我们一般通过$_SERVER['HTTP_HOST']来活得URL中网站的域名或者ip地址。
php手册中的解释如下:
“HTTP_HOST”
当前请求的 Host: 头信息的内容。
一般来说,这样子不会遇到什么问题,在一些常见的php框架中,如PFC3和FLEA也是基于该预定义变量。
然而最近在做的一个项目,程序移交到客户手里测试时,竟然发现程序的跳转总是会出错。
最后找出原因:$_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'] : '');
希望本文所述对大家的php程序设计有所帮助。
相关推荐
-
php REMOTE_ADDR之获取访客IP的代码
<?php $iipp=$_SERVER["REMOTE_ADDR"]; echo $iipp; ?>[/code][code]<?php $user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"]; $user_IP = ($user_IP) ? $user_IP : $_SER
-
PHP中限制IP段访问、禁止IP提交表单的代码
我们只要在feedback.php中添加下面的代码进行判断就可以了. 注意:下边只是一个PHP限制IP的实例代码,如果您打算应用到CMS中,请自行修改,或者如果您正在使用DEDECMS,可以联系本站. 复制代码 代码如下: <?php //加IP访问限制 if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { $userip = getenv('HTTP_CLIENT_IP')
-
PHP用星号隐藏部份用户名、身份证、IP、手机号等实例
一.仿淘宝评论购买记录隐藏部分用户名,以下代码亲测可用. 复制代码 代码如下: function cut_str($string, $sublen, $start = 0, $code = 'UTF-8') { if($code == 'UTF-8') { $pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\
-
PHP实现限制IP访问的方法
本文实例讲述了PHP实现限制IP访问的方法.分享给大家供大家参考,具体如下: //获取客户端ip if (getenv("HTTP_CLIENT_IP")) $ip = getenv("HTTP_CLIENT_IP"); else if(getenv("HTTP_X_FORWARDED_FOR")) $ip = getenv("HTTP_X_FORWARDED_FOR"); else if(getenv("REMOT
-
php限制ip地址范围的方法
本文实例讲述了php限制ip地址范围的方法.分享给大家供大家参考.具体如下: 只有在限定范围内的ip地址才能访问 function get_real_ipaddress() { if (!empty($_SERVER['HTTP_CLIENT_IP'])) { return $_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { return $_SERVER['HTTP_X_FORWAR
-
PHP实现的限制IP投票程序IP来源分析
本文实例分析了PHP实现的限制IP投票程序.分享给大家供大家参考,具体如下: 接到一个投票活动的需求,需要做IP限制,每个IP限制一定的投票机会.我在搜索引擎上搜索了关键词:PHP客户端IP ,结果基本上都是以下内容: if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { $onlineip = getenv('HTTP_CLIENT_IP'); } elseif(getenv('
-
如何限制访问者的ip(PHPBB的代码)
如何限制访问者的ip(PHPBB的代码) Code: <?php/**************************************************************************** admin_user_ban.php* -------------------* begin : Tuesday, Jul 31, 2001* copyright : (C) 2001 The phpBB Group* email : [email]support@phpbb.c
-
PHP实现限制IP访问及提交次数的方法详解
本文实例讲述了PHP实现限制IP访问及提交次数的方法.分享给大家供大家参考,具体如下: 一.原理 提交次数是肯定要往数据库里写次数这个数据的,比如用户登陆,当用户出错时就忘数据库写入出错次数1,并且出错时间,再出错写2,当满比如5次时提示不允许再登陆,请明天再试,然后用DateDiff计算出错时和now()的时间,如果大于24就再开放让他试. 封IP的话特别是给IP断就比较简单了, 先说给IP段开放的情况:先取出客户访问的IP,为了解释方便,设有IP192.168.6.2 现要开放IP段为192
-
PHP 获取客户端真实IP地址多种方法小结
经过复杂的判断与算是的获取IP地址函数 复制代码 代码如下: function getIP() { if (getenv('HTTP_CLIENT_IP')) { $ip = getenv('HTTP_CLIENT_IP'); } elseif (getenv('HTTP_X_FORWARDED_FOR')) { $ip = getenv('HTTP_X_FORWARDED_FOR'); } elseif (getenv('HTTP_X_FORWARDED')) { $ip = getenv('
-
php IP及IP段进行访问限制的代码
192.168.1.1 单个IP 192.168.1.* 这样代理 192.168.1.1-192.168.1-255 192.158.1.2-20 这样是代表192.158.1.2-192.158.1.20 也可以这样写 192.168.1.[1|2|3] 嘿嘿-一个方法不知道想法是否周全,拿出来大家讨论 使用 以下是引用片段: $oBlock_ip = new block_ip(); $oBlock_ip->checkIP(); 以下是引用片段: 复制代码 代码如下: <?php clas
-
用php代码限制国内IP访问我们网站
利用淘宝的IP接口来判断IP,是否是国内的ip,是国内(CN)的就不允许访问. $ip = $_SERVER['REMOTE_ADDR']; $content = file_get_contents('http://ip.taobao.com/service/getIpInfo.php?ip='.$ip); $banned = json_decode(trim($content), true); $lan = strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']
随机推荐
- MongoDB学习笔记之分组(group)使用示例
- Tomcat管理平台_动力节点Java学院整理
- Python实现获取命令行输出结果的方法
- asp.net checkbox 动态绑定id GridView删除提示
- asp.net GridView模板列中实现选择行功能
- JS模拟实现方法重载示例
- ASP.NET 控件开发系列之图片切换web控件
- Python学习笔记之os模块使用总结
- C语言数据结构二叉树简单应用
- 修改MySQL数据库中表和表中字段的编码方式的方法
- jQuery 添加/移除CSS类实现代码
- 批处理实现固定IP地址 系统自动登录 登录后锁定计算机
- Linux系统中C语言编程创建函数fork()执行解析
- 5种nginx负载均衡配置方法分享
- sqlserver中查找所有包含了某个文本的存储过程
- jquery 元素相对定位代码
- 可控制Flash Player的Javascript方法总结
- 基于大端法、小端法以及网络字节序的深入理解
- Java字节流与基本数据类型的转换实例
- PHP文件缓存类实现代码