Hej jag håller på att skriva ett ASP login script och har köra fast lite.
Jag vet inte riktigt hur jag ska göra för att jämföra ett anvnamn och lösen med min databas om de finns.
Det är If satsen vid bottnen som problemet ligger. Just nu går det bara att logga in med ett anvnamn och lösen. Jag vill att den jämför databaslistan med det som skrivits ni i login.asp i 2 st textrutor.
Här är koden:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<%
set Conn=Server.Createobject("ADODB.Connection")
Conn.Provider="Microsoft.Jet.OLEDB.4.0"
Conn.Open Server.MapPath("databas.mdb")
'Kollar efter tabellen med konton
varSQL="select * from TblLogin Order By id Desc;"
Set rs=Conn.Execute(varSQL)
Do until rs.EOF
'Skapar sessionsvariabler
anvnamn = request.form("anvnamn")
losen = request.form("losen")
session("inloggad") = 0
If anvnamn="daddale" and losen="qwe123"<% Then
session("inloggad")=1
response.Redirect("form.asp")
Else
%>
Du skrev fel användaruppgifter, <a href="login.asp">tillbaka</a>
<% End If %>
</body>
</html>
Jag vill inte påstå att det är helt optimal att loopa igenom hela databasen med användare och jämföra varje post. Utan där bör du istället ställa en mer intelligent fråga till databasen för att bara få ut ett resultat där du kollar om uppgifterna stämmer.
Sen kommer den där koden inte funka alls med alla felaktiga <%-taggar och för att du aldrig hämtar något från databasen.
sAnvNamn = Request.Form("anvnamn")
sPasswd = Request.Form("passwd")
' Här nedan tar vi och rensar bort två farliga tecken, men jag rekommenderar dig att istället skapa en
' funktion som bara släpper igenom godkända tecken istället för att rensa bort otillåtna, men den får
' du göra själv.
sAnvNamn = Replace(sAnvNamn, Chr(34), "") ' Ta bort Dubbelfnutt
sAnvNamn = Replace(sAnvNamn, Chr(39), "") ' Ta bort enkelfnutt
bOK = False
set Conn=Server.Createobject("ADODB.Connection")
Conn.Provider="Microsoft.Jet.OLEDB.4.0"
Conn.Open Server.MapPath("databas.mdb")
Set rs = Server.CreateObject("ADODB.RecordSet")
' Här öppnas databasen på ett sådant vis att den inte tillåter uppdateringar. Ett litet skydd injections.
rs.Open "SELECT * FROM TblLogin WHERE anvnamn = '" & sAnvNamn & "'", Conn
If rs.EOF = False Then
' OK, användaren finns. Kolla nu lösenordet
If sPasswd = rs("passwd") Then
' Det stämde så släpp in, men vad gäller lösenord bör du tittat på någon form av hashning eller kryptering
bOK = True
Else
bOK = False
End If
Else
bOK = False
End If
rs.Close
Set rs = Nothing
Conn.close
Set conn = Nothing
If bOK Then
Session.Value("inloggad") = True
Response.Redirect("form.asp")
Else
Session.Abandon
Response.Write("Felaktigt anvnamn/lösenord!")
End If
Hoppas detta är till hjälp.
Hoppas detta är till hjälp.
Tack så mycket jag ska testa att sätta in detta.
Är alltid öppen att lära mig mer, jag just börjat mes ASP så kan inte så mycket ännu
Jag ska även försöka till någon sorts kryptering till lösenorden
Mvh, Daddale
Hoppas detta är till hjälp.
Tack tack jag har flätat in allt nu det fungerar hur bra som helst!
Mvh, Daddale
Copyright © 1999–2023 Geeks AB. Allt innehåll tillhör Geeks AB.
Citering är tillåten om källan anges.