php-getenv

来源:互联网 发布:linux wait源码分析 编辑:程序博客网 时间:2024/06/05 12:41

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

0 0
原创粉丝点击