1、getenv()函数
定义:取得系统环境变量,根据不同的参数可以获取不同的环境变量
语法:string getenv(string varname)
返回值:返回的是字符串
2、HTTP_CLIENT_IP:HTTP_CLIENT_IP 是代理服务器发送的HTTP头。如果是“超级匿名代理”,则返回none值
1
2
3 1
2REMOTE_ADDR:是你的客户端跟你的服务器“握手”时候的IP。如果使用了“匿名代理”,REMOTE_ADDR将显示代理服务器的IP
3
HTTP_X_FORWARDED_FOR:浏览当前页面的用户计算机的网关。
在PHP 中使用 $_SERVER["REMOTE_ADDR"] 来取得客户端的 IP 地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址,就要使用 $_SERVER["HTTP_X_FORWARDED_FOR"] 来读取。
不过要注意的事,并不是每个代理服务器都能用 $_SERVER["HTTP_X_FORWARDED_FOR"] 来读取客户端的真实 IP,有些用此方法读取到的仍然是代理服务器的 IP。
还有一点需要注意的是:如果客户端没有通过代理服务器来访问,那么用$_SERVER["HTTP_X_FORWARDED_FOR"] 取到的值将是空的。
3、strcasecmp() 函数
定义:比较两个字符串,且不区分大小写
语法:strcasecmp(string1,string2)
返回值:0 两个字符串相等
<0 string1小于string2
>0 string1大于string2
4、获取ip方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 1
2
3
4function GetIP(){
5 if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
6 $ip = getenv("HTTP_CLIENT_IP");
7 else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
8 $ip = getenv("HTTP_X_FORWARDED_FOR");
9 else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
10 $ip = getenv("REMOTE_ADDR");
11 else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
12 $ip = $_SERVER['REMOTE_ADDR'];
13 else
14 $ip = "unknown";
15 return($ip);
16}
17