webForumDet fria alternativet

IP-block

ASPur ASP

29 svar · 1 394 visningar · startad av WebbisNet

Medlem sedan feb. 20032 027 inlägg
Frågan#1

Jag vill ha en IP-block på medlemmar vid inloggning, jag har det så här nu

strAnvNamn = FriendlySQL(Request.Form ("txtUsername"))
strLosen = FriendlySQL(Request.Form ("txtPassword"))
iprs=objConn.Execute("select * from ipblock where username='" & strAnvNamn & "'")
blockatIP = iprs("ip")

If objRS("blockadTill") > Date() then
	Response.Redirect "/main.asp?error=blockad&d="&replace(objRS("blockadTill"),"-","")&""
ElseIf "& IP &" = "& blockatIP &" then
	Response.Redirect "/main.asp?error=blockad&d="&(objRS("ip"))
End If

Får fel om att kolumnen inte heter si och så och att det blir eof och bof, vad gör jag för fel

IP är ip i användartabellen och ip är ipnummer i ip-blocktabellen

Medlem sedan dec. 19996 721 inlägg
#2

Kolla objRS.EOF och bestäm dig för om det är "iprs" eller "objRS" som du vill använda. Datumkontrollen bör du göra direkt i SQL-frågan.

Medlem sedan feb. 20032 027 inlägg
#3

Ska jag har det så här då, är dålig på joins

SQL="SELECT * FROM tblUsers u INNER JOIN ipblock ip ON u.username = ip.username WHERE username = '" & strAnvNamn & "' AND userPass = '" & strLosen & "'"
Medlem sedan juni 20003 076 inlägg
#4

Ett litet tips:
Använd inte replace för att formatera datum till sträng som du gör här:

Response.Redirect "/main.asp?error=blockad&d="&replace(objRS("blockadTill"),"-","")&""

Det ställer bara till det om du ändrar språk nån gång (som inte använder "-" i sina datum)
Utan hämta ut siffrorna för sig istället:

Response.Redirect "/main.asp?error=blockad&d= " & year(objRS("blockadTill")) & month(objRS("blockadTill")) & day(objRS("blockadTill"))

RED/
Och eftersom ett recordset är ett objekt så ska du "sätta" det:

Set objRs = objConn....

Och som emission skriver, bestäm dig för om det är iprs eller objRs som gäller! ;)

Medlem sedan feb. 20032 027 inlägg
#5

doggelito skrev:

Ett litet tips:
Använd inte replace för att formatera datum till sträng som du gör här:

Response.Redirect "/main.asp?error=blockad&d="&replace(objRS("blockadTill"),"-","")&""

Det ställer bara till det om du ändrar språk nån gång (som inte använder "-" i sina datum)
Utan hämta ut siffrorna för sig istället:

Response.Redirect "/main.asp?error=blockad&d= " & year(objRS("blockadTill")) & month(objRS("blockadTill")) & day(objRS("blockadTill"))

RED/
Och eftersom ett recordset är ett objekt så ska du "sätta" det:

Set objRs = objConn....

Och som emission skriver, bestäm dig för om det är iprs eller objRs som gäller! ;)

set har jag redan, fick inte med det bara

SET objConn = connect()
SQL="SELECT * FROM tblUsers WHERE username = '" & strAnvNamn & "' AND userPass = '" & strLosen & "'"
Set objRS= objConn.Execute(SQL)

men om jag byter ut min sql här mot joinen jag skrev ovanför, ska det funka då?

Medlem sedan dec. 19996 721 inlägg
#6

Hur ser tabellerna ut?

ElseIf "& IP &" = "& blockatIP &" then

Kolla igenom den if-satsen.... Den kommer aldrig att bli uppfylld

Medlem sedan feb. 20032 027 inlägg
#7

IPblock tabellen
+----------------+----------+
| ip | username |
+----------------+----------+
| 81.233.92.251 | Nallen |
+----------------+----------+

IP i userstabellen är det IP medlemmen loggar in med, det bara uppdateras, där läggs inga rader till

Medlem sedan dec. 19996 721 inlägg
#8

WebbisNet skrev:

IP i userstabellen är det IP medlemmen loggar in med, det bara uppdateras, där läggs inga rader till

Okej, så vilken relevans har IP-numret för själva blockeringen, om man jämför med att bara blockera själva användaren?

Medlem sedan feb. 20032 027 inlägg
#9

användaren kan skaffa nytt konto från samma dator, en ip block är mer effektivt

Medlem sedan dec. 19996 721 inlägg
#10

Så egentligen är det IP:t du vill blocka, och det är användarnamnet som är irrelevant?

Medlem sedan feb. 20032 027 inlägg
#11

ja det är det

Medlem sedan dec. 19996 721 inlägg
#12

Jaha, ja då ska vi inte röra till det med joinar och annat. Sök i block-tabellen (i en egen sökning) efter en aktiv blockering på det aktuella IP:t och blockera om du får en träff.

Medlem sedan feb. 20032 027 inlägg
#13

hur ska jag skriva om koden för att få en effektiv blockfunktion?

denna funkar ju inte

[B]iprs=objConn.Execute("select * from ipblock where username='" & strAnvNamn & "'")[/B]

SET objConn = connect()
SQL="SELECT * FROM tblUsers WHERE username = '" & strAnvNamn & "' AND userPass = '" & strLosen & "'"
Set objRS= objConn.Execute(SQL)
If NOT objRS.EOF THEN 
	Session("userID") = objRS("userID")
	'Session("userID") = objRS("sessionNumber")
	Session("username") = objRS("username")
	Session("inloggningar") = objRS("inloggningar")

if session("userID") = 1 then
objConn.Execute("Update tblUsers SET inloggningar = inloggningar+1 , inloggad = 0, "&_
		"IP= '" & IP & "', Datum = '" & Datum & "'  WHERE userID= 1")
else
		objConn.Execute("Update tblUsers SET Tstamp='"&TDate&"', inloggningar = inloggningar+1 ,poang = poang+0.2, inloggad = "& varInloggad &", "&_
		"IP= '" & IP & "', Datum = '" & Datum & "'  WHERE userID= " & Session("userID") &"")
end if

Response.Cookies("webbisnet")("UserID") = objRS("userID") 
Response.Cookies("webbisnet").Expires = dateadd("n",90,now)

[B]If objRS("blockadTill") > Date() then
Response.Redirect "/main.asp?error=blockad&d= " & year(objRS("blockadTill")) & month(objRS("blockadTill")) & day(objRS("blockadTill"))
ElseIf "& IP &" = "& blockatIP &" then
	Response.Redirect "/main.asp?error=blockad&d="&(objRS("ip"))
End If[/B]
Medlem sedan juni 200032 969 inlägg
Medlem sedan dec. 19996 721 inlägg
#15

1. Nu söker du ju på användarnamn i ipblock. Det var ju inte intressant kom vi fram till.
2. iprs används aldrig.
3. ElseIf:en är fortfarande fel. Skaffa en texteditor med kodfärgning så ser du vad som är fel.

Medlem sedan feb. 20032 027 inlägg
#16

tips på bra editor med syntaxfärgning, hade ett bra prog en gång för asp där man kunde ladda upp till servern så fort man sparade dokumentet men kommer inte ihåg var det hette, textpad är inte så bra på färgning

Medlem sedan feb. 20032 027 inlägg
#17

Då ska dessa rader fungera bättre

Set IPBlockRS=ObjConn.Execute("Select ip from ipblock where ip="&IP)
If not IPBlockRS.EOF Then
	Response.Redirect "/main.asp?error=blockad&d="&(objRS("ip"))
End If
Medlem sedan juni 200032 969 inlägg
#18

Då ska dessa rader fungera bättre

Beror väl på vad man menar med bättre, men nej, det bör inte fungera.

Medlem sedan feb. 20032 027 inlägg
#19

Hur ska jag skriva om koden?

Medlem sedan juni 200032 969 inlägg
#20

Det märker du när du ser felmeddelandet du får av ditt kodförslag. =)

135 ms totalt · 3 externa anrop · v20260731065814-full.55e59744
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)