码迷,mamicode.com
首页 > Web开发 > 详细

PHP获取客户端的IP地址

时间:2018-11-30 15:42:07      阅读:317      评论:0      收藏:0      [点我收藏+]

标签:forward   客户端   获取客户端ip   font   ret   方法   介绍   client   code   

首先我们来了解相关变量的含义:

$_SERVER[‘REMOTE_ADDR‘]:浏览当前页面的用户计算机的ip地址
$_SERVER[‘HTTP_CLIENT_IP‘]:客户端的ip
$_SERVER[‘HTTP_X_FORWARDED_FOR‘]:浏览当前页面的用户计算机的网关
$_SERVER[‘HTTP_X_REAL_IP‘]:nginx 代理模式下,获取客户端真实IP

下面我们通过简单的代码示例来介绍PHP获取客户端IP地址的方法。
/**
 *  获取客户端IP地址
 */
function real_ip()
{

    $ip = $_SERVER[‘REMOTE_ADDR‘];
    if (isset($_SERVER[‘HTTP_X_FORWARDED_FOR‘]) && preg_match_all(‘#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s‘, $_SERVER[‘HTTP_X_FORWARDED_FOR‘], $matches)) {
        foreach ($matches[0] AS $xip) {
            if (!preg_match(‘#^(10|172\.16|192\.168)\.#‘, $xip)) {
                $ip = $xip;
                break;
            }
        }
    } elseif (isset($_SERVER[‘HTTP_CLIENT_IP‘]) && preg_match(‘/^([0-9]{1,3}\.){3}[0-9]{1,3}$/‘, $_SERVER[‘HTTP_CLIENT_IP‘])) {
        $ip = $_SERVER[‘HTTP_CLIENT_IP‘];
    } elseif (isset($_SERVER[‘HTTP_CF_CONNECTING_IP‘]) && preg_match(‘/^([0-9]{1,3}\.){3}[0-9]{1,3}$/‘, $_SERVER[‘HTTP_CF_CONNECTING_IP‘])) {
        $ip = $_SERVER[‘HTTP_CF_CONNECTING_IP‘];
    } elseif (isset($_SERVER[‘HTTP_X_REAL_IP‘]) && preg_match(‘/^([0-9]{1,3}\.){3}[0-9]{1,3}$/‘, $_SERVER[‘HTTP_X_REAL_IP‘])) {
        $ip = $_SERVER[‘HTTP_X_REAL_IP‘];
    }
    return $ip;
}

PHP获取客户端的IP地址

标签:forward   客户端   获取客户端ip   font   ret   方法   介绍   client   code   

原文地址:https://www.cnblogs.com/sgm4231/p/10043827.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!