• 获取用户真实Ip地址


    REMOTE_ADDR 是你的客户端跟你的服务器“握手”时候的IP。如果使用了“匿名代理”,REMOTE_ADDR将显示代理服务器的IP。
    HTTP_CLIENT_IP 是代理服务器发送的HTTP头。如果是“超级匿名代理”,则返回none值。同样,REMOTE_ADDR也会被替换为这个代理服务器的IP。
    $_SERVER['REMOTE_ADDR']; //访问端(有可能是用户,有可能是代理的)IP
    $_SERVER['HTTP_CLIENT_IP']; //代理端的(有可能存在,可伪造)
    $_SERVER['HTTP_X_FORWARDED_FOR']; //用户是在哪个IP使用的代理(有可能存在,也可以伪造)

    if( !function_exists('get_client_ip') ) {
    function get_client_ip($type = 0, $adv = false) {
    $type = $type ? 1 : 0;
    static $ip = NULL;
    if ($ip !== NULL)
    return $ip[$type];
    if ($adv) {
    if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
    $pos = array_search('unknown', $arr);
    if (false !== $pos)
    unset($arr[$pos]);
    $ip = trim($arr[0]);
    } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
    $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (isset($_SERVER['REMOTE_ADDR'])) {
    $ip = $_SERVER['REMOTE_ADDR'];
    }
    } elseif (isset($_SERVER['REMOTE_ADDR'])) {
    $ip = $_SERVER['REMOTE_ADDR'];
    }
    // IP地址合法验证
    $long = sprintf("%u", ip2long($ip));
    $ip = $long ? array(
    $ip,
    $long
    ) : array(
    '0.0.0.0',
    0
    );
    return $ip[$type];
    }
    }
  • 相关阅读:
    docker mysql8 phpmyadmin
    linux 压缩与解压缩
    Ubuntu添加开机自动启动程序的方法
    Linux基本命令集合
    linux下使用supervisor启动.net core mvc website的配置
    小修改,让mvc的验证锦上添点花(2)
    小修改,让mvc的验证锦上添点花(1)
    java 基础面试
    redis 面试题
    springMVC 面试题整理
  • 原文地址:https://www.cnblogs.com/agang-php/p/5036860.html
Copyright © 2020-2023  润新知