程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php cli方式下獲取服務器ip

php cli方式下獲取服務器ip

編輯:關於PHP編程

(1)php cli方式下獲取服務器ip


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

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] 
 

[php]
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 />' ;   

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 />' ; 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved