zoukankan      html  css  js  c++  java
  • 获得用户的真实IP地址

    /**
    * 获得用户的真实IP地址
    *
    * @access public
    * @return string
    */
    if (!function_exists('get_real_ip'))
    {
    function get_real_ip()
    {
    static $realip = NULL;

    if ($realip !== NULL)
    {
    return $realip;
    }

    if (isset($_SERVER))
    {
    if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
    {
    $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_CLIENT_IP']))
    {
    $realip = $_SERVER['HTTP_CLIENT_IP'];
    }
    else
    {
    if (isset($_SERVER['REMOTE_ADDR']))
    {
    $realip = $_SERVER['REMOTE_ADDR'];
    }
    else
    {
    $realip = '0.0.0.0';
    }
    }
    }
    else
    {
    if (getenv('HTTP_X_FORWARDED_FOR'))
    {
    $realip = getenv('HTTP_X_FORWARDED_FOR');
    }
    elseif (getenv('HTTP_CLIENT_IP'))
    {
    $realip = getenv('HTTP_CLIENT_IP');
    }
    else
    {
    $realip = getenv('REMOTE_ADDR');
    }
    }

    preg_match("/[d.]{7,15}/", $realip, $onlineip);
    $realip = !empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0';

    return $realip;
    }
    }
  • 相关阅读:
    为什么硬链接不能链接目录、文件inode 和目录 dentry 的区别联系
    LVM 详解
    pwd 命令详解
    type 命令详解
    查看文件中字符出现次数
    lesson
    xml linq
    新系统配置
    空合并运算符(??):
    dos.ORM配置和使用
  • 原文地址:https://www.cnblogs.com/brady-wang/p/9908484.html
Copyright © 2011-2022 走看看