返回

PHP获取真实的ip地址

发布时间:2022-09-23 10:35:34 515
# php

php获取真实的ip地址,不是代理的ip,直接上代码

 public static function get_real_ip()
{
if (isset($_SERVER)) {
static $realip = NULL;
if ($realip !== NULL) {
return $realip;
}
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { //阿里云接入云盾高防,第一个值是用户真实IP,后面的值都是代理IP,包括HTTP_X_REAL_IP都有可能(运营商不同)是代理IP
$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;
}
}
} elseif (isset($_SERVER['HTTP_X_REAL_IP'])) {
$realip = $_SERVER['HTTP_X_REAL_IP'];
} elseif (isset($_SERVER['REMOTE_ADDR'])) {
$realip = $_SERVER['REMOTE_ADDR'];
} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
$realip = $_SERVER['HTTP_CLIENT_IP'];
} else {
$realip = '0.0.0.0';
}
} else {
if (getenv('REMOTE_ADDR')) {
$realip = getenv('REMOTE_ADDR');
} elseif (getenv('HTTP_X_FORWARDED_FOR')) {
$realip = getenv('HTTP_X_FORWARDED_FOR');
} else {
$realip = getenv('HTTP_CLIENT_IP');
}
}
preg_match("/[\d\.]{7,15}/", $realip, $onlineip);
$realip = !empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0';
return $realip;
}


特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
window下phpstudy开启redis扩展 2022-09-23 10:10:37