php获取客户端ip地址
来源:互联网 发布:淘宝代理充值怎么做 编辑:程序博客网 时间:2024/05/22 03:46
php获取客户端ip地址
简介
最近做的项目需要php获取网站客户端访问的ip地址,其实原理很简单,从php的$_SERVER全局数组中直接获取即可。不过有的时候服务器不同或者代理服务器等等问题,索性全部总结一遍,基本各种情况都考虑到了,直接使用即可
代码
<?phpfunction real_ip(){ //静态变量只存在于函数作用域内,也就是说,静态变量只存活在栈中。一般的函数内变量在函数结束后会释放,比如局部变量,但是静态变量却不会 static $realip = NULL; if ($realip !== NULL) { return $realip; } //可获取到$_SERVER的情况下 if(isset($_SERVER)){ //如果客户端用了代理ip if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){ $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); /* 取X-Forwarded-For中第一个非unknown的有效IP字符串 */ foreach ($arr AS $ip){ $ip = trim($ip); if ($ip != 'unknown'){ $realip = $ip; break; } } //代理ip }elseif (isset($_SERVER['HTTP_CLIENT_IP'])){ $realip = $_SERVER['HTTP_CLIENT_IP']; //握手ip,有代理则是代理ip,没有代理则是真实ip }else{ if (isset($_SERVER['REMOTE_ADDR'])){ $realip = $_SERVER['REMOTE_ADDR']; }else{ $realip = '0.0.0.0'; } } //获取不到$_SERVER的情况下 }else{ if (getenv('HTTP_X_FORWARDED_FOR')){ $realip = getenv('HTTP_X_FORWARDED_FOR'); }elseif (getenv('HTTP_CLIENT_IP')){ $realip = getenv('HTTP_CLIENT_IP'); }else{ $realip = getenv('REMOTE_ADDR'); } } //最后正则过滤ip地址 preg_match("/[\d\.]{7,15}/", $realip, $onlineip); $realip = !empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0'; return $realip;}echo real_ip();
阅读全文
0 0
- PHP获取客户端ip地址
- PHP获取客户端IP地址
- php获取客户端IP地址
- PHP 获取客户端IP地址
- PHP获取客户端IP地址
- php 获取客户端IP地址
- php 获取客户端ip地址
- PHP获取客户端IP地址
- php获取客户端ip地址
- php获取客户端IP地址方法总结
- PHP获取客户端真实 IP 地址
- php获取客户端真实IP地址
- php获取客户端ip地址的方法
- PHP中客户端IP地址的获取
- PHP获取客户端和服务器IP地址
- PHP 获取客户端真实的ip地址
- PHP如何获取客户端真实IP地址?
- PHP获取客户端和服务器IP地址
- 外观模式(java实现)
- 面向对象的程序设计(3)
- maven项目问题
- 文章标题
- btrace 的使用
- php获取客户端ip地址
- python解析Markdown标题关系
- 前端常用网站集锦
- 图像与机器学习-2-基础知识及cs231n/assignment1
- BTrace小结(+houseMD使用)
- 从0开始学习 GITHUB 系列之「初识 GITHUB
- 建造者模式(java实现)
- 微信多域名授权
- openssl-1.1.0f VC编译方法