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
emissionMedlem sedan dec. 19996 721 inlägg 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.
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 & "'"
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! ;)
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å?
emissionMedlem sedan dec. 19996 721 inlägg Hur ser tabellerna ut?
ElseIf "& IP &" = "& blockatIP &" then
Kolla igenom den if-satsen.... Den kommer aldrig att bli uppfylld
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
emissionMedlem sedan dec. 19996 721 inlägg
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?
användaren kan skaffa nytt konto från samma dator, en ip block är mer effektivt
emissionMedlem sedan dec. 19996 721 inlägg Så egentligen är det IP:t du vill blocka, och det är användarnamnet som är irrelevant?
emissionMedlem sedan dec. 19996 721 inlägg 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.
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]
@ndersMedlem sedan juni 200032 969 inlägg emissionMedlem sedan dec. 19996 721 inlägg 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.
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
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
@ndersMedlem sedan juni 200032 969 inlägg
Då ska dessa rader fungera bättre
Beror väl på vad man menar med bättre, men nej, det bör inte fungera.
Hur ska jag skriva om koden?
@ndersMedlem sedan juni 200032 969 inlägg Det märker du när du ser felmeddelandet du får av ditt kodförslag. =)