php如何擷取用戶端IP地址

來源:互聯網
上載者:User
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的演算法 //URL:http://www.bianceng.cn/webkf/PHP/201410/45962.htm 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;  ?>        <?phpfunction 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 位址….~~~~

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.