function getip() {//by surfchen.org
    if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    } else {
        $ip = $_SERVER['REMOTE_ADDR'];
    }   
    if (strpos($ip, ",")) {
        $ips = explode(",", $ip);
        return trim($ips[0]);
    }   
    return $ip;
}

解决方案 »

  1.   

    转:
       1. <?php   
       2. /*  
       3.  * Copyright (c) 2006-2008 coderhome.net  
       4.  * All rights reserved.  
       5.  * Support : 志凡([email protected])  
       6.  *  
       7.  * Version :  1.0  
       8.  */  
       9. class Ip {   
      10.     public static function get() {   
      11.         if ($_SERVER['HTTP_CLIENT_IP'] && $_SERVER['HTTP_CLIENT_IP']!='unknown') {   
      12.             $ip = $_SERVER['HTTP_CLIENT_IP'];   
      13.         } elseif ($_SERVER['HTTP_X_FORWARDED_FOR'] && $_SERVER['HTTP_X_FORWARDED_FOR']!='unknown') {   
      14.             $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];   
      15.         } else {   
      16.             $ip = $_SERVER['REMOTE_ADDR'];   
      17.         }   
      18.         return $ip;   
      19.     }   
      20.        
      21.     public static function ipToInt($ip) {   
      22.         $ips = explode('.',$ip);   
      23.         if (count($ips)>=4) {   
      24.             $int = $ips[0]*256*256*256+$ips[1]*256*256+$ips[2]*256+$ips[3];   
      25.         } else {   
      26.             throw new Exception('ip is error');   
      27.         }   
      28.         return $int;   
      29.     }   
      30.        
      31.     public static function isIn($startIp, $endIp, $ip) {   
      32.         $start = Ip::ipToInt($startIp);   
      33.         $end = Ip::ipToInt($endIp);   
      34.         $ipInt = Ip::ipToInt($ip);   
      35.         $result = false;   
      36.         if ($ipInt>=$start && $ipInt<=$end) {   
      37.             $result = true;   
      38.         }   
      39.         return $result;   
      40.     }   
      41. }   
      42. ?>  
      

  2.   


    用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获取ip的算法:
    <?php
    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;
    ?>
      

  3.   

    不用那么麻烦吧?$ip = getenv("REMOTE_ADDR"); echo "你的IP:".$ip ; 这样不就可以了
      

  4.   

    code=PHP]
    if($_SERVER['HTTP_CLIENT_IP'])
     {
                $user_ip=$_SERVER['HTTP_CLIENT_IP'];
             }
     elseif($_SERVER['HTTP_X_FORWARDED_FOR'])
     {
                $user_ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
             }
     else
     {
                $user_ip=$_SERVER['REMOTE_ADDR'];
             }
    echo "ip为:".$user_ip;
    [/code]
      

  5.   

    if($_SERVER['HTTP_CLIENT_IP'])
     {
                $user_ip=$_SERVER['HTTP_CLIENT_IP'];
             }
     elseif($_SERVER['HTTP_X_FORWARDED_FOR'])
     {
                $user_ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
             }
     else
     {
                $user_ip=$_SERVER['REMOTE_ADDR'];
             }
      

  6.   

    你打印下$_SERVER就可以看到所有的信息了,
    print_r($_SERVER);
      

  7.   


    get_real_ip()在IP为100.0.0.1 - 109.255.255.255时会撞在BUG上
      

  8.   

    $ipaddress=$_SERVER["REMOTE_ADDR"];
    echo $ipaddress;