php获取用户(客户端)真实IP地址的三种方法
2016-10-13 11:17
836 查看
php获取用户(客户端)真实IP地址的三种方法
第一种方法,还算靠谱,本人以前一直用的是这个方法:
查看代码
打印
第二种方法:
查看代码
打印
第三种方法,摘自DISCUZ,应该还不错吧!
查看代码
打印
转载请注明出处:php程序员的笔记
第一种方法,还算靠谱,本人以前一直用的是这个方法:
查看代码
打印
01 | function get_real_ip(){ |
02 | $ip =false; |
03 | if (! empty ( $_SERVER [ 'HTTP_CLIENT_IP' ])){ |
04 | $ip = $_SERVER [ 'HTTP_CLIENT_IP' ]; |
05 | } |
06 | if (! empty ( $_SERVER [ 'HTTP_X_FORWARDED_FOR' ])){ |
07 | $ips = explode ( ', ' , $_SERVER [ 'HTTP_X_FORWARDED_FOR' ]); |
08 | if ( $ip ){ array_unshift ( $ips , $ip ); $ip =FALSE; } |
09 | for ( $i =0; $i < count ( $ips ); $i ++){ |
10 | if (! eregi ( '^(10│172.16│192.168).' , $ips [ $i ])){ |
11 | $ip = $ips [ $i ]; |
12 | break ; |
13 | } |
14 | } |
15 | } |
16 | return ( $ip ? $ip : $_SERVER [ 'REMOTE_ADDR' ]); |
17 | } |
查看代码
打印
01 | function get_real_ip(){ |
02 | static $realip ; |
03 | if (isset( $_SERVER )){ |
04 | if (isset( $_SERVER [ 'HTTP_X_FORWARDED_FOR' ])){ |
05 | $realip = $_SERVER [ 'HTTP_X_FORWARDED_FOR' ]; |
06 | } else if (isset( $_SERVER [ 'HTTP_CLIENT_IP' ])){ |
07 | $realip = $_SERVER [ 'HTTP_CLIENT_IP' ]; |
08 | } else { |
09 | $realip = $_SERVER [ 'REMOTE_ADDR' ]; |
10 | } |
11 | } else { |
12 | if ( getenv ( 'HTTP_X_FORWARDED_FOR' )){ |
13 | $realip = getenv ( 'HTTP_X_FORWARDED_FOR' ); |
14 | } else if ( getenv ( 'HTTP_CLIENT_IP' )){ |
15 | $realip = getenv ( 'HTTP_CLIENT_IP' ); |
16 | } else { |
17 | $realip = getenv ( 'REMOTE_ADDR' ); |
18 | } |
19 | } |
20 | return $realip ; |
21 | } |
查看代码
打印
01 | // 获取IP地址(摘自discuz) |
02 | function getIp(){ |
03 | $ip = '未知IP' ; |
04 | if (! empty ( $_SERVER [ 'HTTP_CLIENT_IP' ])){ |
05 | return is_ip( $_SERVER [ 'HTTP_CLIENT_IP' ])? $_SERVER [ 'HTTP_CLIENT_IP' ]: $ip ; |
06 | } elseif (! empty ( $_SERVER [ 'HTTP_X_FORWARDED_FOR' ])){ |
07 | return is_ip( $_SERVER [ 'HTTP_X_FORWARDED_FOR' ])? $_SERVER [ 'HTTP_X_FORWARDED_FOR' ]: $ip ; |
08 | } else { |
09 | return is_ip( $_SERVER [ 'REMOTE_ADDR' ])? $_SERVER [ 'REMOTE_ADDR' ]: $ip ; |
10 | } |
11 | } |
12 | function is_ip( $str ){ |
13 | $ip = explode ( '.' , $str ); |
14 | for ( $i =0; $i < count ( $ip ); $i ++){ |
15 | if ( $ip [ $i ]>255){ |
16 | return false; |
17 | } |
18 | } |
19 | return preg_match( '/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/' , $str ); |
20 | } |
相关文章推荐
- php获取客户端真实ip地址的三种方法
- php中获取远程客户端的真实ip地址的方法
- php中获取远程客户端的真实ip地址的方法
- PHP 获取客户端真实IP地址多种方法小结
- PHP 获取客户端真实IP地址多种方法小结
- php获取客户端真实IP地址
- php获取客户端IP地址的几种方法
- Java获取客户端真实IP地址的两种方法
- php获取客户端IP地址的几种方法
- PHP获取真实IP地址方法及原理
- 使用PHP获取用户客户端真实IP的解决方案
- 在反向代理中Java获取客户端真实IP地址的两种方法
- php中获取远程客户端的真实ip地址
- Java获取客户端真实IP地址的两种方法
- Java获取客户端真实IP地址的两种方法
- Java获取客户端真实IP地址的两种方法
- php获取客户端IP地址的几种方法
- Java获取客户端真实IP地址的两种方法
- 用php获取客户端IP地址的方法