php获取客户端IP地址的几种方法

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用
    php获取客户端IP地址的几种方法  
    阅读php获取客户端IP地址的几种方法,          
    <?php  
    $iipp=$_SERVER["REMOTE_ADDR"];  
    echo $iipp;  
    ?>  
      
      
    <?php  
    $user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];  
    $user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"];  
    echo $user_IP;  
    ?>  
      
      
    <?php   
    function get_real_ip(){  
    $ip=false;  
    if(!empty($_SERVER["HTTP_CLIENT_IP"])){  
    $ip = $_SERVER["HTTP_CLIENT_IP"];  
    }  
    if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {  
    $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);  
    if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }  
    for ($i = 0; $i < count($ips); $i++) {  
    if (!eregi ("^(10|172\.16|192\.168)\.", $ips[$i])) {  
    $ip = $ips[$i];  
    break;  
    }  
    }  
    }  
    return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);  
    }  
      
    echo get_real_ip();  
    ?>  
      
    <?php   
    //php获取ip的算法  
    if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"])  
    {  
    $ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];  
    }  
    elseif ($HTTP_SERVER_VARS["HTTP_CLIENT_IP"])  
    {  
    $ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];  
    }  
    elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"])  
    {  
    $ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];  
    }  
    elseif (getenv("HTTP_X_FORWARDED_FOR"))  
    {  
    $ip = getenv("HTTP_X_FORWARDED_FOR");  
    }  
    elseif (getenv("HTTP_CLIENT_IP"))  
    {  
    $ip = getenv("HTTP_CLIENT_IP");  
    }  
    elseif (getenv("REMOTE_ADDR"))  
    {  
    $ip = getenv("REMOTE_ADDR");  
    }  
    else  
    {  
    $ip = "Unknown";  
    }  
    echo "你的IP:".$ip ;  
    ?>  
      
      
    <?php   
    if(getenv('HTTP_CLIENT_IP')) {  
    $onlineip = getenv('HTTP_CLIENT_IP');  
    } elseif(getenv('HTTP_X_FORWARDED_FOR')) {  
    $onlineip = getenv('HTTP_X_FORWARDED_FOR');  
    } elseif(getenv('REMOTE_ADDR')) {  
    $onlineip = getenv('REMOTE_ADDR');  
    } else {  
    $onlineip = $HTTP_SERVER_VARS['REMOTE_ADDR'];  
    }  
    echo $onlineip;  
    ?>  
      
    <?php  
    function getIP() /*获取客户端IP*/  
    {  
    if (@$_SERVER["HTTP_X_FORWARDED_FOR"])  
    $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];  
    else if (@$_SERVER["HTTP_CLIENT_IP"])  
    $ip = $_SERVER["HTTP_CLIENT_IP"];  
    else if (@$_SERVER["REMOTE_ADDR"])  
    $ip = $_SERVER["REMOTE_ADDR"];  
    else if (@getenv("HTTP_X_FORWARDED_FOR"))  
    $ip = getenv("HTTP_X_FORWARDED_FOR");  
    else if (@getenv("HTTP_CLIENT_IP"))  
    $ip = getenv("HTTP_CLIENT_IP");  
    else if (@getenv("REMOTE_ADDR"))  
    $ip = getenv("REMOTE_ADDR");  
    else  
    $ip = "Unknown";  
    return $ip;  
    }  
      
    echo getip();  
    ?>  
      
      
      
    1:来看看代码:  
      
      echo "(1)浏览当前页面的用户的 IP 地址为:";  
      
      echo $_SERVER['REMOTE_ADDR'];  
      
      echo "";  
      
      echo "(2)浏览当前页面的用户的 IP 地址为:";  
      
      echo getenv('REMOTE_ADDR');  
      
      echo "";  
      
      echo "主机 www.baidu.com 的 IP 地址为:";  
      
      echo gethostbyname(www.baidu.com);  
      
    2:它的输出结果为:  
      
      (1)浏览当前页面的用户的 IP 地址为:127.0.0.1  
      
      (2)浏览当前页面的用户的 IP 地址为:127.0.0.1  
      
      主机 www.baidu.com 的 IP 地址为:61.135.169.105  
      
    3:关于获取客户端的 IP 地址,有俩方法:  
      
      第一个是使用:  
      
      $_SERVER['REMOTE_ADDR']  
      
      它正在浏览当前页面用户的 IP 地址,这里的输出结果为 127.0.0.1,因为这是在本地测试,输出的是我本地的环路地址。  
      
      第俩个是使用:  
      
      getenv('REMOTE_ADDR')  
      
      这里使用了函数 getenv : Gets the value of an environment variable(得到各种环境变量的值),返回值:Returns the value of the environment variable varname, or FALSE on an error(失败的话返回 FALSE).  
      
    4:关于获取服务器端的 IP 地址:  
      
      gethostbyname(www.baidu.com)  
      
      这里使用了函数 gethostbyname : Get the IP address corresponding to a given Internet host name(通过给定的一个主机名字而得到它的 IP 地址),返回值:Returns the IP address of the Internet host specified by hostname or a string containing the unmodified hostname on failure(失败的话返回原样的输入字符主机名).  
      
    5:注意这里的最后一句,也就是说,如果失败的话,它会将原样输出,  
    例如:    
    echo "无效主机 iwilldown 的 IP 地址为:";    
    echo gethostbyname("iwilldown");    
    输出无效主机 iwilldown 的 IP 地址为:iwilldown  当然,这个可不是 IP 地址….~~~~  

标签: 代码 服务器 服务器端

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:js实现图片上传预览

下一篇:C#判断网卡是否可用