简明现代魔法 -> PHP服务器脚本 -> PHP获得客户端IP

PHP获得客户端IP

2009-10-26

getenv -- Gets the value of an environment variable, string getenv ( string varname ), Returns the value of the environment variable varname, or FALSE on an error.

<?php 
  // Example use of getenv()
  $ip = getenv('REMOTE_ADDR');
  // Or simply use a Superglobal ($_SERVER or $_ENV)
  $ip = $_SERVER['REMOTE_ADDR']; 
?>

这是在PHP官方的manual提供的方法。

但是当Web服务器API是ASAPI (IIS)的时候,getenv函数是不起作用的。这种情况下你如果用getenv来取得用户客户端ip的话,得到的将是错误的ip地址。

因此更为安全和准确的方法是尽量避免使用getenv函数。比如可以用以下的函数来获取ip信息:

程序代码

<?php
	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);
	}

	$ip = GetIP();
	echo $ip;
?>

运行结果演示

你的IP为: 54.163.210.170

随机文章推荐
网站分类


注:如需转载本文,请注明出处(原文链接),谢谢。更多精彩内容,请进入简明现代魔法首页。

进入新博客
喜欢本文,就分享它吧
给我留言
您的名字:
您的邮件:
您的网站:


 

copyright © 2009 简明现代魔法    学习、分享、进步

power by Gonn 感谢所有关心和支持本站的朋友们