webForumDet fria alternativet

Spärra ip

ASP

9 svar · 239 visningar · startad av Gimbo

Medlem sedan dec. 20001 626 inlägg
Frågan#1

Hejsan!

För att spärra ett visst ipnummer så använder jag mig av följande:

<%

visitorIP = Request.ServerVariables("REMOTE_ADDR") 
If visitorIP = "ipnumret"   Then 
Response.Redirect("..\bannad.asp") 
end if

%>

Jaga undrar ifall det finns ngt sätt där man med hjälp av ett formulär och databas kan genom att fylla i formuläret på ett ipnummer så läggs den till i scriptet, i och med det kunna banna flera personer med hjälp av databasen...

Tacksam för svar

Medlem sedan dec. 200012 464 inlägg
#2

Sida för att mata in

<form action='addip.asp' method='POST'>
<input type='TEXT' name='IP'>
<input type='SUBMIT' value='Lägg till IP'>
</form>

sida för att mata in i databas

set connect = server.createobject("adodb.connection")
connect.open "dsn"
'
'kontrollera om det är  en ny adress
'
sql = "select 1 from bannadAdress where ipNummer = '" & request.form("IP") &"'"
set rs = connect.execute(sql)
if rs.eof then
sql = "insert into bannadAdress(ipNummer) values ('" & request.form("IP") & "')"
connect.execute sql,,128
end if
rs.close
set rs = nothing
connect.close
set connect = nothing

coh sedan för att se om en adress inte är tillåten

set connect = server.createobject("adodb.connection")
connect.open "dsn"
'
'kontrollera om det är  en ny adress
'
sql = "select 1 from bannadAdress where ipNummer = '" & request.form("IP") & "'"
set rs = connect.execute(sql)
if not rs.eof then
rs.close
set rs = nothing
connect.close
set connect = nothing
Response.Redirect("..\bannad.asp") 
end if

------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 13 nov 2001]

Medlem sedan dec. 20001 626 inlägg
#3

Hmmm... LarsG, ngt knasa... allt går alldeles utmärkt, ipnummret skrivs till databasen osv.

jag har två kolumner där, ID och ipNummer, men respons.redirecten fungerar inte. så här ser koden ut:

<!-- #include file="..\adovbs.inc" -->

	<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("..\db.mdb")
'kontrollera om det är en ny adress
'
sql = "select 1 from bannadAdress where ipNummer = '" & request.form("IP") & "'"
set rs = connect.execute(sql)
if not rs.eof then
rs.close
set rs = nothing
connect.close
set connect = nothing
Response.Redirect("..\bannad.asp") 
end if
%>

jag ändrade bara som du ser anslutningen till databasen från din urspungliga kod...

Medlem sedan dec. 200012 464 inlägg
#4

Jag klippte och klistrade lite mycket

sql = "select 1 from bannadAdress where ipNummer = '" & Request.ServerVariables("REMOTE_ADDR") & "'"

så borde det bli

------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 13 nov 2001]

Medlem sedan dec. 20001 626 inlägg
#5

MAN TACKAR O BOCKAR!!!

Medlem sedan dec. 20001 626 inlägg
#6

LarsG, jag satt och pilla lite med koden du gav mig men kom inte fram till ngt smidigt, det är så här att jag vill vidare utveckla koden, och göra detta:

Att då man lägger till ett ip så ska den bara finnas i databasen i 1vecka och sedan försvinner den automatiskt...

har du några tips, med avseende på koden ovan...

Medlem sedan feb. 20012 412 inlägg
#7

Hej!

Kanske något i stil med:

dim strDelete
strDelete = date() -7
sql = "delete from tabellen where datumfield < #" & strDelete & "# "
Connect.execute(sql)

mvh Jörgen :)

------------------
Varför bråka när man kan kramas?

[Redigerat av jorgen den 13 nov 2001]

Medlem sedan dec. 200012 464 inlägg
#8

Jo, du behöver en extra kolumn, tex slutDatum som är av typen date

alter table bannadAdress add slutdatum date

Sen så kan du lägga in det slutdatum när du lagrar adressen. Samtidigt så kan du ju lägga in kod som tar bort alla gamla

if rs.eof then
sql = "insert into bannadAdress(ipNummer,slutDatum) values ('" & request.form("IP") & "',dateadd('d',7,now())"
connect.execute sql,,128
end if
sql = "delete from bannadAdress where slutdatum < now()"
connect.execute sql,,128

Sen så behöver du lägga till ett villkor till när du kollar vilka som är bannade

sql = "select 1 from bannadAdress where ipNummer = '" & Request.ServerVariables("REMOTE_ADDR") & "' and slutDatum >= now()"

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 20001 626 inlägg
#9

Hmm... vart ska jag trycka in denna kodsnutt, i vilken av mina tre filer, den som öppnar databasem, den som stänger den eller i vilken?

och vart i koden??

Medlem sedan mars 2001243 inlägg
#10

Vet ej om jag missuppfattat, men är det verkligen bra att spärra ip-nummer? Vissa har väl fast ip-nummer medans andra alltid får olika sov?

------------------
http://www.hutters.net

259 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)