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.
3 | $ip = getenv ( 'REMOTE_ADDR' ); |
5 | $ip = $_SERVER [ 'REMOTE_ADDR' ]; |
这是在PHP官方的manual提供的方法。
但是当Web服务器API是ASAPI (IIS)的时候,getenv函数是不起作用的。这种情况下你如果用getenv来取得用户客户端ip的话,得到的将是错误的ip地址。
因此更为安全和准确的方法是尽量避免使用getenv函数。比如可以用以下的函数来获取ip信息:
程序代码
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' ]; |
运行结果演示
你的IP为: 127.0.0.1
没有帐号? 现在注册.