[SQL與PHP] 取得用戶ip的4個寫法



[SQL與PHP] 取得用戶ip的4個寫法

PHP Code one:
  1. <?
  2. //php獲取ip的算法
  3. $iipp=$_SERVER["REMOTE_ADDR"];
  4. echo $iipp;
  5. ?>
複製代碼
//如果遇有proxy,則需用以下3種
PHP Code two:
  1. <?php
  2. //php獲取ip的算法
  3. $user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
  4. $user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"];

  5. echo $user_IP;
  6. ?>

  7. =----------------------------------------------=

  8. <?
  9. function get_real_ip(){
  10.    $ip=false;
  11.    if(!empty($_SERVER["HTTP_CLIENT_IP"])){
  12.    $ip = $_SERVER["HTTP_CLIENT_IP"];
  13.    }
  14.    if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  15.       $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
  16.       if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }
  17.       for ($i = 0; $i < count($ips); $i++) {
  18.          if (!eregi ("^(10│172.16│192.168).", $ips[$i])) {
  19.             $ip = $ips[$i];
  20.             break;
  21.          }
  22.       }
  23.    }
  24.    return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
  25. }

  26. echo get_real_ip();
  27. ?>
複製代碼
PHP Code three:
  1. <?
  2. //php獲取ip的算法
  3. if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"])
  4. {
  5.    $ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
  6. }
  7. elseif ($HTTP_SERVER_VARS["HTTP_CLIENT_IP"])
  8. {
  9.    $ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
  10. }
  11. elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"])
  12. {
  13.    $ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
  14. }
  15. elseif (getenv("HTTP_X_FORWARDED_FOR"))
  16. {
  17.    $ip = getenv("HTTP_X_FORWARDED_FOR");
  18. }
  19. elseif (getenv("HTTP_CLIENT_IP"))
  20. {
  21.    $ip = getenv("HTTP_CLIENT_IP");
  22. }
  23. elseif (getenv("REMOTE_ADDR"))
  24. {
  25.    $ip = getenv("REMOTE_ADDR");
  26. }
  27. else
  28. {
  29.    $ip = "Unknown";
  30. }
  31. echo "你的IP:".$ip ;
  32. ?>
複製代碼
PHP Code four:
  1. <?
  2. //php獲取ip的算法
  3. if(getenv('HTTP_CLIENT_IP')) {
  4.    $onlineip = getenv('HTTP_CLIENT_IP');
  5. } elseif(getenv('HTTP_X_FORWARDED_FOR')) {
  6.    $onlineip = getenv('HTTP_X_FORWARDED_FOR');
  7. } elseif(getenv('REMOTE_ADDR')) {
  8.    $onlineip = getenv('REMOTE_ADDR');
  9. } else {
  10.    $onlineip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
  11. }
  12. echo $onlineip;
  13. ?>
複製代碼
註解:
REMOTE_ADDR 是你的客戶端跟你的服務器「握手」時候的IP。如果使用了「匿名代理」,REMOTE_ADDR將顯示代理服務器的IP。

HTTP_CLIENT_IP 是代理服務器發送的HTTP頭。如果是「超級匿名代理」,則返回none值。同樣,REMOTE_ADDR也會被替換為這個代理服務器的IP。