您的位置:首页 > 编程语言 > PHP开发

php cli方式下获取服务器ip

2014-08-26 16:06 316 查看
(未整理....)

(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地址的函数写法如下:

/**

* 获取客户端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;

}


客户端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类

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; }


客户端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 />' ;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: