hvis du har sørget for at fjerne enkelt plinger og gåseøjn er det vel rimeligt sikkert og idet at du tjekker/registrerer ip skræmmer også nogle brugere i at forsøge...
det kommer an på hvad du bruger - bruger du et database login? så skal du sikre dig at dit opslag i databasen ikke kan misbruges eller tilføjes noget...
jeg er enig og du udvider bare ovenstående funktion til de tegn du ønsker at den skal erstatte med ingenting eller lave det på samme måde som du har lavet dit javascript med pop-up, som fortæller brugeren at de ikke må bruge de tegn til login...
<% If Request.Querystring("do") = "check" Then Set Cn = Server.CreateObject("ADODB.Connection") Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbAccess Set Rs = Cn.Execute("SELECT * FROM "& tblLogin &"")
If Rs.EOF then Session("mess") = "<font color='#FF0000'>"& txtMessNoUser &"</font>" Else
Do Until RS.EOF If Request.Form("user") = Rs(""& rowPostLogin(1) &"") AND Request.Form("pass") = Rs(""& rowPostLogin(2) &"") Then Response.Redirect txtPageLogin &"?do=login" End If RS.MoveNext Loop
Måske en god ide at ændre "?do=login" til noget man ik kan gætte så let (nej jeg gættede det ik, så det bare i din sidste post), men nogle ville sikkert gætte det hvis de gad bruge tid.
Det er ret besværligt det du har gjort. Der er ingen grund til at løbe alle poster igennem for at tjekke om brugeren eksisterer. Du burde tjekke direkte i din SQL-sætning. Desuden burde du give brugeren en session-variabel om at han er logget ind, hvis han findes i databasen (og ikke hvis ?do=login), som herefter tjekkes på alle efterfølgende sider.
Øhhh der bliver slet ikke testet på loginnavn ? http://www.kriegbaum.dk/ad/login.asp?do=login og du er inde. Hvad med at sætte en session hvis man bliver logget ind og så redirecte, på den måde kan man teste på om session er blevet sat på sider som man kun skal se når man er logget ind.
If Request.Querystring("do") = "check" Then Set Cn = Server.CreateObject("ADODB.Connection") Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbAccess
Set rs = Conn.Execute("SELECT * FROM login WHERE user = '" & FormatInput(Request.Form("user") & "' AND pass = '" & FormatInput(Request.Form("pass") & "'"
If Not rs.Eof Then Session("brugerloggetind") = "Ja" Response.Redirect "default.asp"
Set rs = Conn.Execute("SELECT * FROM login WHERE user = '" & FormatInput(Request.Form("user") & "' AND pass = '" & FormatInput(Request.Form("pass") & "'" ---------------------------------------------------------------------------------------------------------------------------------------------------------^
52 = Set rs = Conn.Execute("SELECT * FROM login WHERE user = '" & FormatInput(Request.Form("user") & "' AND pass = '" & FormatInput(Request.Form("pass") & "'"
Set rs = Conn.Execute("SELECT * FROM login WHERE user = '" & FormatInput(Request.Form("user")) & "' AND pass = '" & FormatInput(Request.Form("pass")) & "'"
Set rs = Conn.Execute("SELECT * FROM login WHERE user = '" & FormatInput(Request.Form("user")) & "' AND pass = '" & FormatInput(Request.Form("pass")) & "'" -----------------------------------------------------------------------------------------------------------------------------------------------------------^
Set rs = Conn.Execute("SELECT * FROM login WHERE user = '" & FormatInput(Request.Form("user")) & "' AND pass = '" & FormatInput(Request.Form("pass")) & "'")
<% If Request.Querystring("do") = "check" Then Set Cn = Server.CreateObject("ADODB.Connection") Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbAccess
Set rs = Conn.Execute("SELECT * FROM login WHERE user = '" & FormatInput(Request.Form("user")) & "' AND pass = '" & FormatInput(Request.Form("pass")) & "'")
If Not rs.Eof Then Session("brugerloggetind") = "Ja" Response.Redirect "default.asp"
If Rs.EOF then Session("mess") = "<font color='#FF0000'>"& txtMessNoUser &"</font>" Else
Do Until RS.EOF If Request.Form("user") = Rs(""& rowPostLogin(1) &"") AND Request.Form("pass") = Rs(""& rowPostLogin(2) &"") Then Response.Redirect txtPageLogin &"?do=login" End If RS.MoveNext Loop
Det er da også stadig noget rod... du skal nok sætte dig lidt mere ind i den grundlæggende asp. Har ryddet lidt op i det, prøv det:
If Request.Querystring("do") = "check" Then Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbAccess
Set rs = Conn.Execute("SELECT * FROM login WHERE user = '" & FormatInput(Request.Form("user")) & "' AND pass = '" & FormatInput(Request.Form("pass")) & "'")
If Not rs.Eof Then Session("mess") = "<font color='#FF0000'>"& txtMessNoUser &"</font>" Else Session("admin") = "ok" Session.TimeOut = 20 Session("brugerloggetind") = "Ja" Response.Redirect "default.asp" End If
Rs.Close Set Rs = Nothing Conn.Close Set Conn = Nothing
If Request.Querystring("do") = "check" Then Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbAccess
Set rs = Conn.Execute("SELECT * FROM login WHERE user = '" & FormatInput(Request.Form("user")) & "' AND pass = '" & FormatInput(Request.Form("pass")) & "'")
If Not rs.Eof Then Session("mess") = "<font color='#FF0000'>"& txtMessNoUser &"</font>" Else Session("admin") = "ok" Session.TimeOut = 20 Session("brugerloggetind") = "Ja" Session("mess") = "<font color='#FF0000'>"& txtMessWrongLogin &" "& strLogIpAdd Cn.Execute("INSERT INTO "& tblLogIp &" " &_ "(["&rowPostIp(1)&"],["&rowPostIp(2)&"],["&rowPostIp(3)&"],["&rowPostIp(4)&"])" &_ "VALUES('"& strLogIpAdd &"','"& Request.Form("user") &"','"& Request.Form("pass") &"','"& Now &"') ") Response.Redirect "default.asp" End If
Rs.Close Set Rs = Nothing Conn.Close Set Conn = Nothing
<% If Request.Querystring("do") = "check" Then Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbAccess
Set rs = Conn.Execute("SELECT * FROM login WHERE user = '" & FormatInput(Request.Form("user")) & "' AND pass = '" & FormatInput(Request.Form("pass")) & "'")
If Not rs.Eof Then Session("mess") = "<font color='#FF0000'>"& txtMessNoUser &"</font>" Else Session("admin") = "ok" Session.TimeOut = 20 Session("brugerloggetind") = "Ja" Session("mess") = "<font color='#FF0000'>"& txtMessWrongLogin &" "& strLogIpAdd Cn.Execute("INSERT INTO "& tblLogIp &" " &_ "(["&rowPostIp(1)&"],["&rowPostIp(2)&"],["&rowPostIp(3)&"],["&rowPostIp(4)&"])" &_ "VALUES('"& strLogIpAdd &"','"& Request.Form("user") &"','"& Request.Form("pass") &"','"& Now &"') ") Response.Redirect "default.asp" End If
Rs.Close Set Rs = Nothing Conn.Close Set Conn = Nothing
Det er bare svært at kode noget i asp, hvis du kopierer noget fra en anden uden selv at forså hver eneste linie selv.
Hvilke felter har du i din access-database og hvad hedder tabellen med brugerne? I din første kode hed den tbl_Login og nu kalder du den login. Du skal lige sikre dig at du kalder tabeller og felter ved deres rigtige navne. Som det er nu kalder du felterne user og pass i tabellen login - er det rigtigt?
Cn.Execute("INSERT INTO "& tblLogIp &" " &_ skal også lige rettes til Conn.Execute("INSERT INTO "& tblLogIp &" " &_ da vi nu kalder din database-forbindelse for Conn.
du skal sørge for at variablen dbAccess indeholder databasens filnavn.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.