Brimba
2000-02-17, 10:53
Hej!
Jag har ett inloggnings script som inte uppför sig som jag vill.
Först har jag en inloggnings sida som ser ut så här:
<% Session("UserId")="" %>
<% Session.Timeout = 4 %>
<p><% If Session("Logintries") = 3 Then%><font face="verdana" size="2">Tyvärr, du har försökt att logga in felaktigt mer än tre
gånger.<br>
Du är nu avstängd från systemet.</p>
<p>För att prova igen måste du stänga din webbläsare och starta om den för att logga
in.</font> <%Else%> </p>
<font face="Verdana, Arial" size="2"><B>Välkommen!</B><br>Ange ditt användarnamn och lösenord tack.</font><br>
<br>
<form method="POST" action="validering.asp">
<center><table border="0" cellPadding="1" cellSpacing="0" width="300" bordercolorlight="#000000" bordercolordark="#FFFFFF">
<tr>
<td width="22%"><small><strong><font face="Arial">Användarnamn:</font></strong></small></td>
<td width="78%"><input type="text" name="Login" size="20"></td>
</tr>
<tr>
<td width="22%"><small><strong><font face="Arial">Lösenord:</font></strong></small></td>
<td width="78%"><input type="password" name="Password" size="20"></td>
</tr>
<tr>
<td width="100%" colspan="2"><input id="submit1" name="B1" src="../images/login.gif" type="image" WIDTH="63" HEIGHT="19" onfocus="blur()"></td>
</tr>
</table>
</center>
</form>
<%End If%>
Sen går den vidare till validate.asp som ser ut så här:
<%
Session("Logintries") = Session("Logintries") + 1
if Session("UserId")="" Then
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "driver={Microsoft Access Driver (*.mdb)};dbq=d:\dmab\login.mdb"
SQL2 = "SELECT * FROM Login Where Login = '" & FixaTecken(Request.Form("Login")) & "'"
Set ideller = Connection.Execute(SQL2)
' Om login namn inte finns så omdirigiera till login.asp
if ideller.BOF AND ideller.EOF then
Response.Redirect("login.asp")
else
passwordchk = StrComp(Request.Form("Password"), ideller("Password"),0)
' är dom lika blir det en 0:a
' är strängarna tex brimba / Brimba blir det en 1:a
if passwordchk=1 Then
Response.Redirect("login.asp")
else
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "driver={Microsoft Access Driver (*.mdb)};dbq=d:\dmab\internet.mdb"
SQL = "SELECT * FROM tabInternetKunder Where anvid = '" & FixaTecken(Request.Form("Login")) & "'"
Set login = Connection.Execute(SQL)
Session("UserId") = Request.Form("Login")
Session("Name") = login("Namn")
Session("Adress") = login("Adress")
Session("Adress2") = login("Adress2")
Session("Postnummer") = login("Postnummer")
Session("persnr") = login("persnr")
Session("Ort") = login("Ort")
Session("Telefonnummer") = login("Tel")
Session("Mobil") = login("mobil")
Session("Email") = login("Epost")
Session("Login") = login("anvid")
Session("Password") = login("Password")
Session("Logintries") = 0
login.Close
Connection.Close
End if
End if
End if
%>
Felet är altså om jag har loggat in så sätter den ju SESSION("USERID") som ett värde, sen kollar jag det på varje sida som skall vara skyddad med hjälp av:
<%
If Session("UserId") = "" Then
Response.Redirect("login.asp")
End If
%>
Men problemet är att när man väl har loggat in en gång så kan man sedan gå till någon annan sida och sen till login sidan igen, väl där kan man logga in med sitt användarnamn och skriva nått helt annat lösenord än sitt riktigt, altså stämmer den aldrig av med databasen jag undrar varför?
Jag vill att varje gång man går till login sidan för att komma åt sidor som är "personliga" skall man behöva logga in korrekt.
Den stämmer av mot databasen första gången man loggar in, men sen struntar den i att kolla eftersom Session("USERID") har fått ett värde. Men jag sätter ju trots allt att session("USERID") skall vara "" så det är lite märkligt.
Nånn som kan hjälpa mig?
Mvh
Patrik
aka Brimba
Jag har ett inloggnings script som inte uppför sig som jag vill.
Först har jag en inloggnings sida som ser ut så här:
<% Session("UserId")="" %>
<% Session.Timeout = 4 %>
<p><% If Session("Logintries") = 3 Then%><font face="verdana" size="2">Tyvärr, du har försökt att logga in felaktigt mer än tre
gånger.<br>
Du är nu avstängd från systemet.</p>
<p>För att prova igen måste du stänga din webbläsare och starta om den för att logga
in.</font> <%Else%> </p>
<font face="Verdana, Arial" size="2"><B>Välkommen!</B><br>Ange ditt användarnamn och lösenord tack.</font><br>
<br>
<form method="POST" action="validering.asp">
<center><table border="0" cellPadding="1" cellSpacing="0" width="300" bordercolorlight="#000000" bordercolordark="#FFFFFF">
<tr>
<td width="22%"><small><strong><font face="Arial">Användarnamn:</font></strong></small></td>
<td width="78%"><input type="text" name="Login" size="20"></td>
</tr>
<tr>
<td width="22%"><small><strong><font face="Arial">Lösenord:</font></strong></small></td>
<td width="78%"><input type="password" name="Password" size="20"></td>
</tr>
<tr>
<td width="100%" colspan="2"><input id="submit1" name="B1" src="../images/login.gif" type="image" WIDTH="63" HEIGHT="19" onfocus="blur()"></td>
</tr>
</table>
</center>
</form>
<%End If%>
Sen går den vidare till validate.asp som ser ut så här:
<%
Session("Logintries") = Session("Logintries") + 1
if Session("UserId")="" Then
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "driver={Microsoft Access Driver (*.mdb)};dbq=d:\dmab\login.mdb"
SQL2 = "SELECT * FROM Login Where Login = '" & FixaTecken(Request.Form("Login")) & "'"
Set ideller = Connection.Execute(SQL2)
' Om login namn inte finns så omdirigiera till login.asp
if ideller.BOF AND ideller.EOF then
Response.Redirect("login.asp")
else
passwordchk = StrComp(Request.Form("Password"), ideller("Password"),0)
' är dom lika blir det en 0:a
' är strängarna tex brimba / Brimba blir det en 1:a
if passwordchk=1 Then
Response.Redirect("login.asp")
else
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "driver={Microsoft Access Driver (*.mdb)};dbq=d:\dmab\internet.mdb"
SQL = "SELECT * FROM tabInternetKunder Where anvid = '" & FixaTecken(Request.Form("Login")) & "'"
Set login = Connection.Execute(SQL)
Session("UserId") = Request.Form("Login")
Session("Name") = login("Namn")
Session("Adress") = login("Adress")
Session("Adress2") = login("Adress2")
Session("Postnummer") = login("Postnummer")
Session("persnr") = login("persnr")
Session("Ort") = login("Ort")
Session("Telefonnummer") = login("Tel")
Session("Mobil") = login("mobil")
Session("Email") = login("Epost")
Session("Login") = login("anvid")
Session("Password") = login("Password")
Session("Logintries") = 0
login.Close
Connection.Close
End if
End if
End if
%>
Felet är altså om jag har loggat in så sätter den ju SESSION("USERID") som ett värde, sen kollar jag det på varje sida som skall vara skyddad med hjälp av:
<%
If Session("UserId") = "" Then
Response.Redirect("login.asp")
End If
%>
Men problemet är att när man väl har loggat in en gång så kan man sedan gå till någon annan sida och sen till login sidan igen, väl där kan man logga in med sitt användarnamn och skriva nått helt annat lösenord än sitt riktigt, altså stämmer den aldrig av med databasen jag undrar varför?
Jag vill att varje gång man går till login sidan för att komma åt sidor som är "personliga" skall man behöva logga in korrekt.
Den stämmer av mot databasen första gången man loggar in, men sen struntar den i att kolla eftersom Session("USERID") har fått ett värde. Men jag sätter ju trots allt att session("USERID") skall vara "" så det är lite märkligt.
Nånn som kan hjälpa mig?
Mvh
Patrik
aka Brimba