您的位置:首页 > 编程语言 > PHP开发

php获取用户(客户端)真实IP地址的三种方法

2016-10-13 11:17 836 查看
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程序员的笔记
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: