S SoulGod Medlem sedan aug. 2005 1 200 inlägg Frågan 6 okt. 2005 19:15 #1 Hej.
Jag har byggt en gästbok, som har standard fält (namn , mail, url, meddelande och ip).
Och allt funkade bra, tills sidan började åka i besökare,
nu har man fått väldigt mycket "dåliga" inlägg,
spam m.m.
Och jag vill nu kunna blockera ett visst IP från att gå in och skriva mer..
Går det, och hur?
E emission Medlem sedan dec. 1999 6 721 inlägg Blocka i IIS:en eller kolla Request.ServerVariables("REMOTE_ADDR")
S SoulGod Medlem sedan aug. 2005 1 200 inlägg Okej, har gjort ett extremt tydligt exempel här.
<% Option Explicit %>
<% Dim get_IP %>
<%
get_IP = Request.ServerVariables("REMOTE_ADDR")
%>
<%
If get_IP = "81.231.112.21" or "81.231.112.20" THEN %>
<% Response.Redirect("deny2.asp") %>
<% Else %>
<% Response.Write(get_IP) %>
<% End If %>
Det jag nu har lite problem med, är att jag vill att den ska söka igenom
en databas efter olika IP, och göra samma funktion.
hur?
SoulGod skrev:
Okej, har gjort ett extremt tydligt exempel här.
<% Option Explicit %>
<% Dim get_IP %>
<%
get_IP = Request.ServerVariables("REMOTE_ADDR")
%>
<%
If get_IP = "81.231.112.21" or "81.231.112.20" THEN %>
<% Response.Redirect("deny2.asp") %>
<% Else %>
<% Response.Write(get_IP) %>
<% End If %>
Det jag nu har lite problem med, är att jag vill att den ska söka igenom
en databas efter olika IP, och göra samma funktion.
hur?
If get_IP = rs("din IP-tabell") THEN %> kanske
S SoulGod Medlem sedan aug. 2005 1 200 inlägg Prövade
Prövade använda den koden,
antingen är jag så dum så jag inte använde den rätt,
eller så fungerar den inte.
<% Option Explicit %>
<%
Dim get_IP
Dim rs
Dim conn
Dim banned
%>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("ip.mdb")
rs = "SELECT * FROM banned ORDER BY ID, desc"
Set get_IP = Request.ServerVariables("REMOTE_ADDR")
If get_IP = rs("banned") THEN %>
<% Response.Redirect("deny2.asp")%>
<% Else %>
<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="center" valign="middle"><strong><font size="3">TESTING!!!<br>
<% Response.Write(get_IP) %> </font></strong></td>
</tr>
</table>
<% End If %>
Detta är koden jag använder just nu.
Vill neka alla ip-adresser i den databasen.
Databasen heter ip.mdb , som ni ser,
och katalogen i databasen heter banned.
Fältet den ska söka i , heter IP.
Jag tycker inte du ska visa att de är blockade för då kan de bara skaffa ett nytt ip att jävlas ifrån (proxys m.m.) istället bör du skicka alla som är bannade till en error sida.
På den sidan skriver du bara att det är nått fel och att det kan försöka lite senare typ.
För er som skrivit exempelkoder här, jag har en fundering:
Varför använder ni så många %> och <%, tänk på att varje <% tar lite prestanda från servern, så försök att ha så lite <% och %> på den sida som möjligt.
S SoulGod Medlem sedan aug. 2005 1 200 inlägg Jag skriver alltid mina exempelkoder med <% %> runt varje kommando,
rent för att jag själv vill ha stenkoll på allt.
Sedan när det läggs ut, så modifierar jag om koden,
till minimalt antal <% %>.
Idéen noterad greyhound.
Dock vet jag fortfarande ingen lösning på problemet *ler*
Y yohpops Medlem sedan feb. 2001 1 198 inlägg Du har fel lite överallt.
Och SQL-frågan är inte så fin.
get_IP = Request.ServerVariables("REMOTE_ADDR")
set rs = conn.execute("SELECT IP FROM banned where IP='"& get_IP &"'")
If not rs.eof THEN %>