一般的程式都具備擷取使用者IP地址的命令,但是我們訪問網站有兩種一種是我們這種普通使用者,一種是使用代理IP上網的使用者,下面我來介紹介紹。
在asp中擷取使用者IP地址我們最簡單的擷取方法就是使用
代碼如下 |
|
Request.ServerVariables("REMOTE_ADDR") |
但是如果使用者使用了Proxy 伺服器IP地址就不對了,但我們可通過
代碼如下 |
|
Request.ServerVariables("REMOTE_ADDR") |
結果上面的兩個擷取IP的方法我們可如下操作
代碼如下 |
|
userip = Request.ServerVariables("HTTP_X_FORWARDED_FOR") If userip = "" Then userip = Request.ServerVariables("REMOTE_ADDR") |
上面的只是一個簡單的判斷方法,在實際應用中我們可能碰到的情況更多,下面看一個不錯的執行個體
代碼如下 |
|
<%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) %> |
這樣幾乎可以擷取到使用者真實IP地址了,但是也不能儲存所有代理的都能擷取到了,只是大家都使用上面的方法。
如果有使用asp.net的朋友可參考下面方法來擷取
代碼如下 |
|
//方法一 HttpContext.Current.Request.UserHostAddress; //方法二 HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; //方法三 string strHostName = System.Net.Dns.GetHostName(); string clientIPAddress = System.Net.Dns.GetHostAddresses(strHostName).GetValue(0).ToString(); //方法四(無視代理) HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; //方法五 var ip = '<!--#echo var="REMOTE_ADDR"-->'; alert("Your IP address is "+ip); //方法六(無視代理) function GetLocalIPAddress() { var obj = null; var rslt = ""; try { obj = new ActiveXObject("rcbdyctl.Setting"); rslt = obj.GetIPAddress; obj = null; } catch(e) { // } return rslt; } |