首页 > 开发 > PHP > 正文

PHP下得到客户端IP的方法

2024-05-04 23:05:16
字体:
来源:转载
供稿:网友
getenv -- gets the value of an environment variable

description

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信息:

//get the real client ip ("bullet-proof")

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

,欢迎访问网页设计爱好者web开发。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表