弦子
Just do IT..

PHP代码获得访客客户端的真实IP地址

上个月网站换了Google PageSpeed Service 的加速后, 网站订单系统的获取客户端IP地址都是 Google CDN 加速的IP地址, 而不是真实的客户端IP地址. 在 PHP 官方的 manual 手册里提供的方法是:

<?php
// Example use of getenv()
$ip = getenv('REMOTE_ADDR');

// Or simply use a Superglobal ($_SERVER or $_ENV)
$ip = $_SERVER['REMOTE_ADDR'];
?>

但是官方的这个办法在当Web服务器API是ASAPI (IIS)的时候, getenv 函数是不起作用的。

所以可以用以下的函数代码来获取真实的ip信息:

<?php  
    function GetIP(){  
        if (getenv("HTTP_CLIENT_IP")   
            && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))  
           $ip = getenv("HTTP_CLIENT_IP");  
        else if (getenv("HTTP_X_FORWARDED_FOR")   
            && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))  
           $ip = getenv("HTTP_X_FORWARDED_FOR");  
        else if (getenv("REMOTE_ADDR")   
            && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))  
           $ip = getenv("REMOTE_ADDR");  
        else if (isset($_SERVER['REMOTE_ADDR'])   
            && $_SERVER['REMOTE_ADDR']   
            && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))  
           $ip = $_SERVER['REMOTE_ADDR'];  
        else  
           $ip = "unknown";  
        return($ip);  
    }  

    $ip = GetIP();  
    echo $ip;  
?>
未经允许不得转载:英文 SEO & SEM Journal » PHP代码获得访客客户端的真实IP地址
分享到: 更多 (0)