PHP之获取终端用户IP

//
function get_real_ip()
{
$ip=false;
$clientip = "clientip";
$xrealip = "xrealip";
$userip ='userip';
$fwip ='fwip';
$aliip = 'aliip';
$forwardedip ='forwardedip';
if(isset($_SERVER["HTTP_CLIENT_IP"]) && !empty($_SERVER['HTTP_CLIENT_IP']) && !preg_match("/^(10|172.16|192.168)./i",$_SERVER['HTTP_CLIENT_IP']) && $_SERVER["HTTP_CLIENT_IP"]!='118.26.171.83' && $_SERVER["HTTP_CLIENT_IP"]!='118.26.171.84')
{
$ip = $_SERVER["HTTP_CLIENT_IP"];
$clientip = $_SERVER["HTTP_CLIENT_IP"];
}
else if(isset($_SERVER["HTTP_X_REAL_IP"]) && !empty($_SERVER['HTTP_X_REAL_IP']) && !preg_match("/^(10|172.16|192.168)./i",$_SERVER['HTTP_X_REAL_IP']) && $_SERVER["HTTP_X_REAL_IP"]!='118.26.171.83' && $_SERVER["HTTP_X_REAL_IP"]!='118.26.171.84')
{
$ip = $_SERVER['HTTP_X_REAL_IP'];
$xrealip = $_SERVER["HTTP_X_REAL_IP"];
}
else if(isset($_SERVER["HTTP_USER_IP"]) && !empty($_SERVER['HTTP_USER_IP']) && !preg_match("/^(10|172.16|192.168)./i",$_SERVER['HTTP_USER_IP']) && $_SERVER["HTTP_USER_IP"]!='118.26.171.83' && $_SERVER["HTTP_USER_IP"]!='118.26.171.84')
{
$ip = $_SERVER['HTTP_USER_IP'];
$userip =$_SERVER['HTTP_USER_IP'];
}
else if(isset($_SERVER["HTTP_FW_ADDR"]) && !empty($_SERVER['HTTP_FW_ADDR']) && !preg_match("/^(10|172.16|192.168)./i",$_SERVER['HTTP_FW_ADDR']) && $_SERVER["HTTP_FW_ADDR"]!='118.26.171.83' && $_SERVER["HTTP_FW_ADDR"]!='118.26.171.84')
{
$ip = $_SERVER['HTTP_FW_ADDR'];
$fwip = $_SERVER["HTTP_FW_ADDR"];
}
else if(isset($_SERVER["HTTP_ALI_CDN_REAL_IP"]) && !empty($_SERVER['HTTP_ALI_CDN_REAL_IP']) && !preg_match("/^(10|172.16|192.168)./i",$_SERVER['HTTP_ALI_CDN_REAL_IP']) && $_SERVER["HTTP_ALI_CDN_REAL_IP"]!='118.26.171.83' && $_SERVER["HTTP_ALI_CDN_REAL_IP"]!='118.26.171.84')
{
$ip = $_SERVER['HTTP_ALI_CDN_REAL_IP'];
$aliip = $_SERVER["HTTP_ALI_CDN_REAL_IP"];
}
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) && !empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
if ($ip)
{
array_push($ips, $ip);
$ip = FALSE;
}
for ($i = 0; $i < count($ips); $i++)
{
if (isset($ips[$i]) && !preg_match("/^(10|172.16|192.168)./i", $ips[$i]) && $ips[$i]!='118.26.171.83' && $ips[$i]!='118.26.171.84')
{
$ip = $ips[$i];
break;
}
}
$forwardedip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}

    return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}

转载于:https://www.cnblogs.com/2018-05-9-ygk/p/9377901.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 PHP 中的 `$_SERVER['REMOTE_ADDR']` 来获取用户的 IP 地址。 例如: ``` $user_ip = $_SERVER['REMOTE_ADDR']; echo "用户的 IP 地址是: $user_ip"; ``` 注意,如果用户使用了代理服务器,则 `$_SERVER['REMOTE_ADDR']` 可能会显示代理服务器的 IP 地址,而不是用户的真实 IP 地址。要获取用户的真实 IP 地址,可以使用一些其他的方法,例如: ``` // 获取用户真实 IP 地址 function get_client_ip() { $ipaddress = ''; if (isset($_SERVER['HTTP_CLIENT_IP'])) $ipaddress = $_SERVER['HTTP_CLIENT_IP']; else if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR']; else if(isset($_SERVER['HTTP_X_FORWARDED'])) $ipaddress = $_SERVER['HTTP_X_FORWARDED']; else if(isset($_SERVER['HTTP_FORWARDED_FOR'])) $ipaddress = $_SERVER['HTTP_FORWARDED_FOR']; else if(isset($_SERVER['HTTP_FORWARDED'])) $ipaddress = $_SERVER['HTTP_FORWARDED']; else if(isset($_SERVER['REMOTE_ADDR'])) $ipaddress = $_SERVER['REMOTE_ADDR']; else $ipaddress = 'UNKNOWN'; return $ipaddress; } $user_ip = get_client_ip(); echo "用户的 IP 地址是: $user_ip"; ``` ### 回答2: 在PHP中,可以使用`$_SERVER`超全局变量的`REMOTE_ADDR`属性来获取用户登录的IP地址。`REMOTE_ADDR`会返回用户的IP地址,这个IP地址是用户连接到服务器所使用的IP地址。可以使用以下代码来获取用户登录的IP地址: ```php $userIP = $_SERVER['REMOTE_ADDR']; ``` 上述代码将用户的IP地址赋值给`$userIP`变量,然后你可以根据需要进行进一步处理或输出。请注意,由于`REMOTE_ADDR`的值是用户提供的,因此需要谨慎使用,以防止恶意用户伪造IP地址。 另外,值得注意的是,由于互联网使用了一些代理和负载均衡技术,所以用户的真实IP地址可能会被中间服务器所隐藏。在这种情况下,可以使用其他的服务器变量,如`HTTP_X_FORWARDED_FOR`来获取用户真实的IP地址。但是,因为这些值可以被伪造,所以在处理它们时需要谨慎。 以上就是获取用户登录IP的简单示例代码,希望对你有帮助。 ### 回答3: 在PHP中,可以使用`$_SERVER`变量的`REMOTE_ADDR`键来获取用户的登录IP。`$_SERVER['REMOTE_ADDR']`将返回用户的IP地址,即使用户正在使用代理服务器也是如此。下面是一个示例代码: ```php <?php $ip = $_SERVER['REMOTE_ADDR']; echo "您的IP地址是:".$ip; ?> ``` 上述代码将根据用户的登录IP显示一条消息,消息内容将包含用户的IP地址。请注意,PHP的`$_SERVER`变量中存储的值是根据具体服务器配置而定的,因此在某些情况下,可能需要进一步的配置和调整才能正确获取用户的IP地址。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值