php-getenv

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.

1 <?php
2   // Example use of getenv()
3   $ip getenv('REMOTE_ADDR');
4   // Or simply use a Superglobal ($_SERVER or $_ENV)
5   $ip $_SERVER['REMOTE_ADDR'];
6 ?>

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

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

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

程序代码
01 <?php
02     function GetIP(){
03         if (getenv("HTTP_CLIENT_IP")
04             && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
05            $ip getenv("HTTP_CLIENT_IP");
06         else if (getenv("HTTP_X_FORWARDED_FOR")
07             && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
08            $ip getenv("HTTP_X_FORWARDED_FOR");
09         else if (getenv("REMOTE_ADDR")
10             && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
11            $ip getenv("REMOTE_ADDR");
12         else if (isset($_SERVER['REMOTE_ADDR'])
13             && $_SERVER['REMOTE_ADDR']
14             && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
15            $ip $_SERVER['REMOTE_ADDR'];
16         else
17            $ip "unknown";
18         return($ip);
19     }
20     $ip = GetIP();
21     echo $ip;
22 ?>
运行结果演示

你的IP为: 127.0.0.1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值