php cli方式下获取服务器ip

11 篇文章 0 订阅

(1)php cli方式下获取服务器ip

function getServerIp(){
		$ss = exec('/sbin/ifconfig eth0 | sed -n \'s/^ *.*addr:\\([0-9.]\\{7,\\}\\) .*$/\\1/p\'',$arr);		
		$ret = $arr[0];
		return $ret;
	}

(2)php cgi方式下 获取 客户端ip和服务器端ip
 
PHP获取客户端和服务器IP地址的函数写法如下:
[code=Php width=600px]/**
* 获取客户端IP地址
* @return string
*/ 
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 = $_SERVER['REMOTE_ADDR'];
    } 
    return $client_ip; 
}   
/**
* 获取服务器端IP地址
* @return string
*/ 
function get_server_ip() { 
    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; 
}
[/code]
客户端IP相关的变量 
1. $_SERVER['REMOTE_ADDR']; 客户端IP,有可能是用户的IP,也有可能是代理的IP。 

2. $_SERVER['HTTP_CLIENT_IP']; 代理端的IP,可能存在,可伪造。 

3. $_SERVER['HTTP_X_FORWARDED_FOR']; 用户是在哪个IP使用的代理,可能存在,可以伪造。 

服务器端IP相关的变量 
1. $SERVER_NAME,需要使用函数gethostbyname()获得。这个变量无论在服务器端还是客户端均能正确显示。 

2. $HTTP_SERVER_VARS["SERVER_ADDR"],在服务器端测试:127.0.0.1(这个与httpd.conf中BindAddress的设置值相关)。在客户端测试结果正确。 

3. $_SERVER['LOCAL_ADDR'] 、$HTTP_SERVER_VARS['LOCAL_ADDR'],测试中,未获得任何结果(测试环境PHP5)。
完整的获得IP类
[code=Php width=600px]01./**   
02. * Get Client/Server IP    
03. *    
04. * @author  Yaron (http://yaron.org.cn)   
05. * @version  0.1   
06. * @package     
07. */     
08.    
09.class  getIP{    
10. function  clientIP(){    
11.  $cIP  =  getenv ( 'REMOTE_ADDR' );    
12.  $cIP1  =  getenv ( 'HTTP_X_FORWARDED_FOR' );    
13.  $cIP2  =  getenv ( 'HTTP_CLIENT_IP' );    
14.  $cIP1  ?  $cIP  =  $cIP1  : null;    
15.  $cIP2  ?  $cIP  =  $cIP2  : null;    
16.  return   $cIP ;    
17. }   
18. function  serverIP(){    
19.  return   gethostbyname ( $_SERVER_NAME );    
20. }   
21.}   
22.    
23.$getIP   =  new  getIP();    
24.$clientIp  = getIP::clientIP();    
25.$serverIp  = getIP::serverIP();    
26.    
27.echo   'Client IP is ' , $clientIp , '<br />' ;    
28.echo   'Server IP is ' , $serverIp , '<br />' ;  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值