有朋友在抱怨自己的本地二手网被无数的省外垃圾信息狂轰乱炸,弄的不可开交,找了很多办法都没效果,后来想到用地域限制,云南以外的只能看不能发,我写了个程序搞定了这个问题,把思路提供给有需要的朋友。
思路是利用纯真IP库,对来的IP进行判断地址,然后根据地址中是否包含某个字(云南、四川)之类的来识别是否是本地访客,不是的话就引导区其他页面。以后再每个需要执行的页面顶部include进去这个文件就行。 程序的数据库30多m有些大 就不公布数据库了,代码如下:
<%
Response.CharSet="utf-8"
Session.CodePage="65001"
on Error Resume next
Dim conn0034,rs0034,IP,IPArray,tIp
IPf=request.form("ip")
if IPf<>"" then
ip=ipf
ip0=ipf
else
If request.QueryString("ip")<>"" and request.QueryString("ip")<>Request.ServerVariables("Remote_HOST") Then
IP=Request.QueryString("ip")
IP0=Request.QueryString("ip")
Else
ip=Request.ServerVariables("Remote_HOST")
IP0=Request.ServerVariables("Remote_HOST")
End If
end if
Set conn0034=Server.CreateObject("ADODB.Connection")
sql="provider=microsoft.jet.oledb.4.0;data source="&Server.MapPath("data/ipaddress.mdb")
conn0034.Open sql
If Errors<>0 Then
Response.Write "error"
Response.End
End If
IPArray=Split(IP,".",-1,1)
For i=0 To 3
tIp = tIp +IPArray(i)*256^(3-i)
Next
ip=tIp
Set rs0034=Server.CreateObject("ADODB.Recordset")
sql="select top 1 country,city from dv_address where (ip1<=" &IP& " and ip2>=" &IP &")"
rs0034.Open sql,conn0034,1,1
add=rs0034("country")
rs0034.Close
Set rs0034=Nothing
Set conn0034=Nothing
if add="" then
add="未知"
end if
if instr(add,"云南")=0 and instr(add,"未知")=0 and instr(add,"保留地址")=0 then
response.write "您不是云南人,本站只面对云南的个人或企业发布信息,您只能阅读本站信息。如果误判,请与管理员联系"
response.end
end if
%>
注:本文发自云南电子商务研究站(http://www.xiongmaotou.com),转载请附带本说明,谢谢