php获取用户(客户端)真实IP地址的三种方法
来源:互联网 发布:桌面美化软件 编辑:程序博客网 时间:2024/06/08 01:17
php获取用户(客户端)真实IP地址的三种方法
第一种方法,还算靠谱,本人以前一直用的是这个方法:
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
}
第三种方法,摘自DISCUZ,应该还不错吧!
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程序员的笔记
0 0
- php获取用户(客户端)真实IP地址的三种方法
- php获取客户端真实ip地址的三种方法
- PHP 获取客户端真实的ip地址
- PHP获取用户的真实IP地址
- Java获取客户端真实IP地址的两种方法
- Java获取客户端真实IP地址的两种方法
- Java获取客户端真实IP地址的两种方法
- Java获取客户端真实IP地址的两种方法
- Java获取客户端真实IP地址的两种方法
- Java获取客户端真实IP地址的两种方法
- Java获取客户端真实IP地址的两种方法
- Java获取客户端真实IP地址的两种方法
- java获取客户端真实IP地址的两种方法
- Java获取客户端真实IP地址的两种方法
- Java获取客户端真实IP地址的两种方法
- Java获取客户端真实IP地址的两种方法
- Java获取客户端真实IP地址的两种方法
- Java获取客户端真实IP地址的两种方法
- uboot之start_armboot分析1
- 二叉树的递归和非递归遍历
- popupwindow的封装
- Realm 入门 简单实用方法
- JS垫脚石-字符串篇
- php获取用户(客户端)真实IP地址的三种方法
- 微信小程序 Button按钮与Icon图标
- Java泛型与C++模板
- oracle创建数据库步骤
- DPDK关键技术点
- 'module' object has no attribute 'MLPRegressor'问题解决(Python2.7)
- maven项目中 使用mybatis 出现 Invalid bound statement (not found) 错误原因之一
- bio nio aio的区别
- Form action defaulting to 'action' attribute's literal value.