PHP如何获取服务器外网IP,第1张

function real_server_ip(){

static $serverip = NULL;

if ($serverip !== NULL){

return $serverip;

}

if (isset($_SERVER)){

if (isset($_SERVER['SERVER_ADDR'])){

$serverip = $_SERVER['SERVER_ADDR'];

}

else{

$serverip = '0000';

}

}

else{

$serverip = getenv('SERVER_ADDR');

}

return $serverip;

}

$_SERVER['REMOTE_PORT'];//端口号

$_SERVER['SERVER_ADDR'];//ip

//补充

$_SERVER['HTTP_CLIENT_IP']; //代理端的(有可能存在,可伪造)

$_SERVER['HTTP_X_FORWARDED_FOR']; //用户是在哪个IP使用的代理(有可能存在,也可以伪造)

<php

function getIp()

{

    $IPaddress='';

    if (isset($_SERVER)){

        if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){

            $IPaddress = $_SERVER["HTTP_X_FORWARDED_FOR"];

        } else if (isset($_SERVER["HTTP_CLIENT_IP"])) {

            $IPaddress = $_SERVER["HTTP_CLIENT_IP"];

        } else {

            $IPaddress = $_SERVER["REMOTE_ADDR"];

        }

    } else {

        if (getenv("HTTP_X_FORWARDED_FOR")){

            $IPaddress = getenv("HTTP_X_FORWARDED_FOR");

        } else if (getenv("HTTP_CLIENT_IP")) {

            $IPaddress = getenv("HTTP_CLIENT_IP");

        } else {

            $IPaddress = getenv("REMOTE_ADDR");

        }

    }

    return $IPaddress;

}

echo getIp();//就可以输出用户的IP地址

>

获取服务器端ip地址

<php

function serverIp(){    

    if(isset($_SERVER)){    

        if($_SERVER['SERVER_ADDR']){    

 $server_ip=$_SERVER['SERVER_ADDR'];    

            }else{    

               $server_ip=$_SERVER['LOCAL_ADDR'];    

           }    

      }else{    

          $server_ip = getenv('SERVER_ADDR');    

    }    

      return $server_ip;    

   }    

        

 echo serverIp();   

 >

此方法在本地不可用。需要上传至服务器

如果在本地使用此方法   打印出来的是127001

希望对你有帮助

这个和SSL加密没有关系的

<php

// 定义一个函数getIP()

function getIP()

{

global $ip;

if (getenv("HTTP_CLIENT_IP"))

$ip = getenv("HTTP_CLIENT_IP");

else if(getenv("HTTP_X_FORWARDED_FOR"))

$ip = getenv("HTTP_X_FORWARDED_FOR");

else if(getenv("REMOTE_ADDR"))

$ip = getenv("REMOTE_ADDR");

else

$ip = "Unknow";

return $ip;

}

// 使用方法:

echo getIP();

>

getenv("REMOTE_ADDR")用来取得客户端的 IP 地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址,就要使用 getenv("HTTP_X_FORWARDED_FOR") 来读取。

但是如果客户端没有通过代理服务器来访问,那么用getenv("HTTP_X_FORWARDED_FOR") 取到的值将是空的。

else if(getenv("HTTP_X_FORWARDED_FOR"))

$ip = getenv("HTTP_X_FORWARDED_FOR");

表示如果getenv("HTTP_X_FORWARDED_FOR") 取到的值存在不为空(即客户端使用代理服务器的情况下),则变量$ip等于getenv("HTTP_X_FORWARDED_FOR") 取到的真实IP值。

如果上面的else if(getenv("HTTP_X_FORWARDED_FOR"))取得的值为空(即没有使用代理服务器),则不会执行下面的$ip = getenv("HTTP_X_FORWARDED_FOR");这一行语句。

这种情况下已经确认客户端没有使用代理服务器,从而通过

else if(getenv("REMOTE_ADDR"))

$ip = getenv("REMOTE_ADDR");

这两行语句获得客户端的IP地址也是真实的IP地址。

/

     获取客户端IP地址

     @param integer $type

     @return mixed

    /

   function getclientip() {

       static $realip = NULL;

        

       if($realip !== NULL){

           return $realip;

       }

       if(isset($_SERVER)){

           if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){ //但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址,就要使用 $_SERVER["HTTP_X_FORWARDED_FOR"] 来读取。

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

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

               foreach ($arr AS $ip){

                   $ip = trim($ip);

                   if ($ip != 'unknown'){

                       $realip = $ip;

                       break;

                   }

               }

           }elseif(isset($_SERVER['HTTP_CLIENT_IP'])){//HTTP_CLIENT_IP 是代理服务器发送的HTTP头。如果是"超级匿名代理",则返回none值。同样,REMOTE_ADDR也会被替换为这个代理服务器的IP。

               $realip = $_SERVER['HTTP_CLIENT_IP'];

           }else{

               if (isset($_SERVER['REMOTE_ADDR'])){ //正在浏览当前页面用户的 IP 地址

                   $realip = $_SERVER['REMOTE_ADDR'];

               }else{

                   $realip = '0000';

               }

           }

       }else{

           //getenv环境变量的值

           if (getenv('HTTP_X_FORWARDED_FOR')){//但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址

               $realip = getenv('HTTP_X_FORWARDED_FOR');

           }elseif (getenv('HTTP_CLIENT_IP')){ //获取客户端IP

               $realip = getenv('HTTP_CLIENT_IP');

           }else{

               $realip = getenv('REMOTE_ADDR');  //正在浏览当前页面用户的 IP 地址

           }

       }

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

       $realip = !empty($onlineip[0])  $onlineip[0] : '0000';

       return $realip;

   }

php获取真实IP地址,参考方法如下:

function GetIP(){ 

if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) 

$ip = getenv("HTTP_CLIENT_IP"); 

else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) 

$ip = getenv("HTTP_X_FORWARDED_FOR"); 

else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) 

$ip = getenv("REMOTE_ADDR"); 

else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) 

$ip = $_SERVER['REMOTE_ADDR']; 

else 

$ip = "unknown"; 

return($ip); 

}

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » PHP如何获取服务器外网IP

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情