回旧版

我爱导航网_我爱网址导航_网站酷站免费导航,尽在我爱导航!

php 获取真正的ip地址而不是代理ip

声明:此函数非唠吧小站远程,代码从ecshop中分离。

当用户流量的时候有时候是代理服务器这时候要想获取访问者的真实ip时可以用下面的代码:

虽然用户可以伪装ip和代理但是原来真实的ip还是可以获取的。

  1. /**

  2.  * 获得用户的真实IP地址

  3.  *

  4.  * @access  public

  5.  * @return  string

  6.  */

  7. function real_ip()

  8. {

  9.     static $realip = NULL;

  10.  

  11.     if ($realip !== NULL)

  12.     {

  13.         return $realip;

  14.     }

  15.  

  16.     if (isset($_SERVER))

  17.     {

  18.         if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))

  19.         {

  20.             $arr =explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);

  21.  

  22.             /* 取X-Forwarded-For中第一个非unknown的有效IP字符串 */

  23.             foreach ($arr AS$ip)

  24.             {

  25.                 $ip = trim($ip);

  26.  

  27.                 if ($ip !='unknown')

  28.                 {

  29.                     $realip =$ip;

  30.  

  31.                     break;

  32.                 }

  33.             }

  34.         }

  35.         elseif (isset($_SERVER['HTTP_CLIENT_IP']))

  36.         {

  37.             $realip =$_SERVER['HTTP_CLIENT_IP'];

  38.         }

  39.         else

  40.         {

  41.             if (isset($_SERVER['REMOTE_ADDR']))

  42.             {

  43.                 $realip =$_SERVER['REMOTE_ADDR'];

  44.             }

  45.             else

  46.             {

  47.                 $realip ='0.0.0.0';

  48.             }

  49.         }

  50.     }

  51.     else

  52.     {

  53.         if (getenv('HTTP_X_FORWARDED_FOR'))

  54.         {

  55.             $realip =getenv('HTTP_X_FORWARDED_FOR');

  56.         }

  57.         elseif (getenv('HTTP_CLIENT_IP'))

  58.         {

  59.             $realip =getenv('HTTP_CLIENT_IP');

  60.         }

  61.         else

  62.         {

  63.             $realip =getenv('REMOTE_ADDR');

  64.         }

  65.     }

  66.  

  67.     preg_match("/[d.]{7,15}/",$realip,$onlineip);

  68.     $realip = !empty($onlineip[0]) ?$onlineip[0] :'0.0.0.0';

  69.  

  70.     return $realip;

  71. }


文章来自:我爱导航,未经允许不得转载!:首页 > 教程收藏 > 建站经验 » php 获取真正的ip地址而不是代理ip