Journal(2005) | Blog(2006) | RandomLink | WhoAmI | LiveBookmark | HomePage

<<Previous: Gallery缩略图制作  >>Next: Kwiki 安装笔记

如何寻找用户真实IP

Category: Basic   Keywords: REMOTE_ADDR IP

Generally

一般程序代码所书写的都是这样(如 ikonboard, UBB, UltraThreads etc.):
$IP_ADDRESS = $ENV{'HTTP_X_FORWARDED_FOR'} || $ENV{'REMOTE_ADDR'};
举个例子会清晰点:
#proxy(anonymous) is 80.59.189.28,then got
$ENV{'REMOTE_ADDR'} = '80.58.3.235';
$ENV{'HTTP_X_FORWARDED_FOR'} = '80.59.189.28';
#no proxy
$ENV{'REMOTE_ADDR'} = '211.90.227.119';#my temp true ip
$ENV{'HTTP_X_FORWARDED_FOR'} = '';

Advance

其实另外还有两个ENV环境变量:'HTTP_CLIENT_IP', 'X_CLIENT_IP'。不过不太常用。如果增加此两变量,代码如下,前三者顺序可能有变(如 YaBB, X-Forum etc.):
$IP_ADDRESS = $ENV{'HTTP_X_FORWARDED_FOR'} || $ENV{'HTTP_CLIENT_IP'} || $ENV{'X_CLIENT_IP'} || $ENV{'REMOTE_ADDR'};

Especial

不适用于localhost/127.0.0.1
对于匿名/Anonymous Proxy来说,因为它不会将使用Proxy的人的ip一起发请求过来,所以获得使用Proxy人的ip是impossible mission.
获得Proxy相关信息的环境变量是$ENV{'HTTP_VIA'}.

<<Previous: Gallery缩略图制作  >>Next: Kwiki 安装笔记

Options: +Del.icio.us

Related items Created on 2004-10-30 19:05:35, Last modified on 2005-01-15 22:39:57
Copyright 2004-2005 All Rights Reserved. Powered by Eplanet && Catalyst 5.62.