//获取客户端ip
  function getIp() {
  $ip1 = getenv("REMOTE_ADDR")?getenv("REMOTE_ADDR"):"none";
  $ip2 = getenv("HTTP_X_FORWARDED_FOR")?getenv("HTTP_X_FORWARDED_FOR"):"none";
  $ip3 = getenv("HTTP_CLIENT_IP")?getenv("HTTP_CLIENT_IP"):"none";
  if (isset($ip1) && $ip1 != "none" && $ip1 != "unknown") {
   return $ip1;
  }
  elseif (isset($ip2) && $ip2 != "none" && $ip2 != "unknown") {
   return $ip2;
  }
  elseif (isset($ip3) && $ip3 != "none" && $ip3 != "unknown") {
   return $ip3;
  }
  else {
  return "none";
  }
}

解决方案 »

  1.   

    <?php
    //echo $_SERVER['REMOTE_ADDR'];?><?php function iptype1 () { if (getenv("HTTP_CLIENT_IP")) {    return getenv("HTTP_CLIENT_IP"); } else {    return "none"; } } function iptype2 () { if (getenv("HTTP_X_FORWARDED_FOR")) {    return getenv("HTTP_X_FORWARDED_FOR"); } else {    return "none"; } } function iptype3 () { if (getenv("REMOTE_ADDR")) {    return getenv("REMOTE_ADDR"); } else {    return "none"; } } function ip() { $ip1 = iptype1();   $ip2 = iptype2(); $ip3 = iptype3(); if (isset($ip1) && $ip1 != "none" && $ip1 != "unknown") {    return $ip1; } elseif (isset($ip2) && $ip2 != "none" && $ip2 != "unknown") {    return $ip2; } elseif (isset($ip3) && $ip3 != "none" && $ip3 != "unknown") {    return $ip3; }     else {   return "none"; } }  Echo ip(); ?> 
      

  2.   

    方法一:
    function get_client_ip()
    {
    if(getenv('HTTP_CLIENT_IP')) {
    $client_ip = getenv('HTTP_CLIENT_IP');
    } elseif(getenv('HTTP_X_FORWARDED_FOR')) {
    $client_ip = getenv('HTTP_X_FORWARDED_FOR');
    } elseif(getenv('REMOTE_ADDR')) {
    $client_ip = getenv('REMOTE_ADDR');
    } else {
    $client_ip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
    }
    return $client_ip;
    }// 打印客户端IP
    print get_client_ip();方法二:
    $_SERVER['REMOTE_ADDR'],还有找个ip地址的数据库配合得到用户所在地区 :)
    但有时候直接用会有问题,写了个函数,得到用户真实IP,做参考:
    <? 
    function iptype1 () { 
    if (getenv("HTTP_CLIENT_IP")) { 
       return getenv("HTTP_CLIENT_IP"); 

    else { 
       return "none"; 


    function iptype2 () { 
    if (getenv("HTTP_X_FORWARDED_FOR")) { 
       return getenv("HTTP_X_FORWARDED_FOR"); 

    else { 
       return "none"; 


    function iptype3 () { 
    if (getenv("REMOTE_ADDR")) { 
       return getenv("REMOTE_ADDR"); 

    else { 
       return "none"; 


    function ip() { 
    $ip1 = iptype1(); 
      $ip2 = iptype2(); 
    $ip3 = iptype3(); 
    if (isset($ip1) && $ip1 != "none" && $ip1 != "unknown") { 
       return $ip1; 

    elseif (isset($ip2) && $ip2 != "none" && $ip2 != "unknown") { 
       return $ip2; 

    elseif (isset($ip3) && $ip3 != "none" && $ip3 != "unknown") { 
       return $ip3; 
    }   
      else { 
      return "none"; 


    Echo ip(); 
    ?> 方法三:
    echo $_SERVER['REMOTE_ADDR'];
      

  3.   

    if( getenv('HTTP_X_FORWARDED_FOR') != '' )
    {
    $client_ip = ( !empty($_SERVER['REMOTE_ADDR']) ) ? $_SERVER['REMOTE_ADDR'] : ( ( !empty($_ENV['REMOTE_ADDR']) ) ? $_ENV['REMOTE_ADDR'] : $REMOTE_ADDR ); $entries = explode(',', getenv('HTTP_X_FORWARDED_FOR'));
    reset($entries);
    while (list(, $entry) = each($entries)) 
    {
    $entry = trim($entry);
    if ( preg_match("/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/", $entry, $ip_list) )
    {
    $private_ip = array('/^0\./', '/^127\.0\.0\.1/', '/^192\.168\..*/', '/^172\.((1[6-9])|(2[0-9])|(3[0-1]))\..*/', '/^10\..*/', '/^224\..*/', '/^240\..*/');
    $found_ip = preg_replace($private_ip, $client_ip, $ip_list[1]); if ($client_ip != $found_ip)
    {
    $client_ip = $found_ip;
    break;
    }
    }
    }
    }
    else
    {
    $client_ip = ( !empty($_SERVER['REMOTE_ADDR']) ) ? $_SERVER['REMOTE_ADDR'] : ( ( !empty($_ENV['REMOTE_ADDR']) ) ? $_ENV['REMOTE_ADDR'] : $REMOTE_ADDR );
    }来自PHPBB2