聘我网

新概念招聘3.0

获取客户端IP的代码

vote up0vote downstar

90%的人可能都是用$_SERVER['REMOTE_ADDR']来获取客户端的ip,但这其实并不一定准--当客户端用代理时,将出错。正确的方法如下:

function ip_address() {
  static $ip_address = NULL;

  if (!isset($ip_address)) {
    $ip_address = $_SERVER['REMOTE_ADDR'];
    if (variable_get('reverse_proxy', 0) && array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER)) {
      // If an array of known reverse proxy IPs is provided, then trust
      // the XFF header if request really comes from one of them.
      $reverse_proxy_addresses = variable_get('reverse_proxy_addresses', array());
      if (!empty($reverse_proxy_addresses) && in_array($ip_address, $reverse_proxy_addresses, TRUE)) {
        // If there are several arguments, we need to check the most
        // recently added one, i.e. the last one.
        $ip_address = array_pop(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']));
      }
    }
  }

  return $ip_address;
}
 

1 个答复

vote up0vote down

长知识啦,顶一个

链接
这样顶对发帖人没实际好处,可以投一票,积分+10可能实惠一些:) - Shore 2009-11-23, 21:41

您的回答





不是您要找的问题? 浏览其他含有标签 的问题或者 自己问个.