webForumDet fria alternativet

Kolla och lagra IP

ASP

9 svar · 354 visningar · startad av webbSAJTEN

Medlem sedan jan. 2002992 inlägg
Frågan#1

Hejsan!
Jag har startat en namninsamling och jag har märkt att det är många som missbrukar den och skickar in en massa onödiga namn.. Jag skulle vilja spara allas IP-nummer i databasen så att jag lätt kan spärra dem..

Hur ska jag bära mig åt??

Medlem sedan jan. 20032 285 inlägg
#2

Är det såhär du menar?

strIP = Request.ServerVariables("REMOTE_ADDR")
strSQL = "SELECT ip FROM namn WHERE ip = '" & strIP & "'"
Set objRS = objConn.Execute(strSQL)

If objRS.EOF Then
  strSQL = "INSERT INTO namn (namn, ip) VALUES ('" & Replace(Request.Form("namn"), "'", "''") & "', '" & strIP & "')"
  objConn.Execute(strSQL),,128
Else
  Response.Write("Hur många namn har du egentligen?")
End If

Set objRS = Nothing
Medlem sedan sep. 20026 425 inlägg
#3

Du får besökares IP-nummer genom att använda servervariablerna i ASP.

<%
Dim ipnr
ipnr = Request.ServerVaraibles("REMOTE_ADDR")
%>

För att sätta in IP-nummer i databasen använder du en SQL-fråga, med denna syntax:

INSERT INTO tabell(ipnr) VALUES('" & ipnr & "')

För att kolla om det spammande IP-numret finns i databasen så kan du använda kod liknande denna:

'anslut till databasen, skapa en anslutning kallad [i]Cn[/i] och ett recordset-objekt kallat [i]Rs[/i].

Dim strSQL, Rs
strSQL = "SELECT ipnr FROM tabell WHERE ipnr='" & ipnr

Set Rs = Cn.Execute(strSQL)

If Rs.EOF Then
'allt okej
Else
skriv ut meddelande om att användaren inte får besöka sidan, eller dyl.
End If

Rs.Close : Set Rs = Nothing
Cn.Close : Set Cn = Nothing

Hoppas du förstår. :D

/r Sebbe han före. :)

Medlem sedan jan. 2002992 inlägg
#4

Såhär..

Jag vill att när dom skriver sitt namn i insamlingen så ska deras IP-nummer lagras i databasen med deras namn..
Det finns en egen kolumn i databasen som heter IP..

Helst så ska det vara så att dom inte skall kunna skriva in mer än en gång.. Alltså att jag inte skall behöva spärra just deras IP, utan att det ska spärras automatiskt..

Medlem sedan jan. 20032 285 inlägg
#5

Aha, då kan du göra såhär:

strIP = Request.ServerVariables("REMOTE_ADDR")
strSQL = "SELECT namn FROM namn ORDER BY namn"
Set objRS = objConn.Execute(strSQL)

blnIP = False

If NOT objRS.EOF Then
  Do Until objRS.EOF
    arrTemp = Split(objRS("namn"), "||")
    strNamnIP = arrTemp(1)

    If strNamnIP = strIP Then
      blnIP = True
      Exit Do
    End If

    objRS.MoveNext
  Loop
End If

If NOT blnIP Then
  strSQL = "INSERT INTO namn (namn) VALUES ('" & Replace(Request.Form("namn"), "'", "''") & "||" & strIP & "')"
  objConn.Execute(strSQL),,128
Else
  Response.Write("Hur många namn har du egentligen?")
End If

Set objRS = Nothing
Medlem sedan jan. 2002992 inlägg
#6

la in..

Jag la in koden på sidan som heter "spara_namn.asp"..
Sidan som tar hand om alla andra namn och sparar dem..
Där IP-nummret ska stå i databsen kommer bara en !´"0"..

Varför det?

Medlem sedan jan. 20032 285 inlägg
#7

Vad skrivs ut av det här på din dator?

Response.Write(Request.ServerVariables("REMOTE_ADDR"))
Medlem sedan jan. 2002992 inlägg
#8

inte..

Jag förstår inte vad du menar tyvärr..
Har du MSN så kan du adda mig: jimmygronwall@hotmail.com

Medlem sedan sep. 20026 425 inlägg
#9

Det är bara att skriva in koden som Sebbe gav dig i en ASP-sida, webbSAJTEN, och köra den sidan. Syns något, syns inte något?

Medlem sedan aug. 20013 824 inlägg
#10

webbSAJTEN: Sebbe menar att du skall testa att skriva

Response.Write(Request.ServerVariables("REMOTE_ADDR"))

ensamt nån stans på en ensam liten sida och testa vad du får för utskrift ;)

296 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
162 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
160 ms — ändringar (db)