特别说明: php
网站从 Fikker反向代理服务器 提供的 HTTP 头的 X-Forwarded-For 字段中得到远程用户的 IP 地址,例如:X-Forwarded-For: 21.23.44.78 或者 X-Forwarded-For: 21.23.44.78; 156.24.66.231 ,当多个 IP 地址同时出现时,代表用户请求可能通过了屡次 Fikker 代理和转发,远程用户有效起始 IP 地址为第一个,即 21.23.44.78 。 java
asp 代码举例: 服务器
<%
Private Function getIP()
Dim strIPAddr
If Request.ServerVariables("HTTP_X_FORWARDED_FOR") = "" OR InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), "unknown") > 0 Then
strIPAddr = Request.ServerVariables("REMOTE_ADDR")
ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",") > 0 Then
strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",")-1)
ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";") > 0 Then
strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";")-1)
Else
strIPAddr = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
End If
getIP = Trim(Mid(strIPAddr, 1, 30))
End Function
ip=getIP()
response.write(ip)
%> asp.net
java 代码举例: 网站
public String getRemortIP(HttpServletRequest request)
{
if (request.getHeader("X-Forwarded-For") == null)
{
return request.getRemoteAddr();
}
return request.getHeader("X-Forwarded-For"); //若是为多个 IP 列表,则取第一个
} .net
asp.net 代码举例: 代理
void getSourceIP()
{
string SourceIP = Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; //得到远程用户 IP 地址
if (string.IsNullOrEmpty(SourceIP))
{
SourceIP = Request.ServerVariables["REMOTE_ADDR"]; //兼容原有程序
}
Response.Write(SourceIP);
} ip
php 代码举例: get
function getRemortIP()
{
if (!isset($_SERVER["HTTP_X_FORWARDED_FOR"])) //存在 X-Forwarded-For 吗?
{
return $_SERVER["REMOTE_ADDR"];
}
return $_SERVER["HTTP_X_FORWARDED_FOR"]; //返回远程用户IP
} string