当前位置: 代码迷 >> ASP >> (有关获取客户端ip地址)
  详细解决方案

(有关获取客户端ip地址)

热度:353   发布时间:2012-03-21 13:33:15.0
高手请进(有关获取客户端ip地址)
我编了一个程序,是获取客户端地址的。因为我们的web服务器上安装了API,所以获取的ip地址都是我们自己服务器上的内部ip地址。请高手帮忙解决。

------解决方案--------------------
我们可以使用asp通过Request.ServerVariables( "REMOTE_ADDR ")来获取客户端的IP地址,假设这是一张asp网页,我们可以通过以下代码来实现:

<html>

<head>
<meta http-equiv= "Content-Type " content= "text/html; charset=gb2312 ">
<title> 这是一个获取IP地址的实例 </title>
</head>

<body>
……………………
……………………
……………………
<% Ip_address=Request.ServerVariables ( "REMOTE_ADDR ")
Response IP_address
%>
……………………
……………………
……………………
</body>

</html> ip=Request.ServerVariables( "HTTP_X_FORWARDED_FOR ")

获取 使用代理的客户的真实ip,客户未使用代理时这个值为空

ip=Request.ServerVariables( "REMOTE_ADDR ")

获取 未使用代理的客户的真实ip

if Request.ServerVariables( "HTTP_X_FORWARDED_FOR ")

=empty then
remoteaddr=Request.ServerVariables( "REMOTE_ADDR ")

else
remoteaddr=Request.ServerVariables( "HTTP_X_FORWARDED_FOR ")
end if

response.write remoteaddr

读取用户地址
如果用了代理,则读出用户的实际地址下面是一个限制用的程序,限制允许的地区访问,不允许使用代理服务器访问:


<%
IP = Request.ServerVariables( "REMOTE_ADDR ")
Function cacuIp(ip)
On Error Resume Next
Dim srIp, aIp
srIp=0
aIp = Split(ip, ". ")
If UBound(aIP) <> 3 Then
cacuIP=0
Exit Function
End If
For i=0 To 3
srIp=srIp+(CInt(aIP(i))*(256^(3-i)))
Next
cacuIp=srIp-1
If Err Then cacuIp=0
End Function
Set CONN=Server.CreateObject( "ADODB.Connection ")
CONN.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ= "&Server.Mappath( "ip.mdb ")
iIp=cacuIp(IP)
SQL = "SELECT country,city FROM IP_SoftYes WHERE ip1 <= " & iIp & " AND ip2> = " & iIp
Set rs = CONN.Execute ( SQL )
If rs.Eof Then
sPlace= "查无记录 "
Else
sPlace=rs(0)& " "&rs(1)
End If
Set rs=Nothing
If not((InStr(sPlace, "北京 ") <> 0) or (InStr(sPlace, "上海 ") <> 0)) Then
Response.Write "错误的物理地址,你将不能访问。 "
Response.End
End If
Set CONN=Nothing
If Request.ServerVariables( "HTTP_X_FORWARDED_FOR ") <> " " Then
Response.Write "本页不允许使用代理服务器访问。 "
Response.End
End If
%>
------解决方案--------------------
如果对方是代理,很难获取他真正的IP
------解决方案--------------------
还有就是客户端共用一个IP的话,你只能查出一个IP
------解决方案--------------------
如果是你们内部网络,使用路由DHCP,或用交换机做网关及DNS,客户端连接到服务端后,用爱森的方法就可以得到
------解决方案--------------------
那就没真实数据了哇=.=
应该这样吧
------解决方案--------------------
我不知道客户端代码是否可以得到客户端自己的ip,如够可以的话,用客户端代码写入form里,提交给你,那应该是最真实的ip了吧!
  相关解决方案