Avatar billede werd Nybegynder
25. juni 2002 - 01:35 Der er 4 kommentarer og
2 løsninger

Problemer!!!

Hvis der lige er en der har tid og lyst itl at kigge på denne kode - den gider nemlig ikke som jeg vil!!

<html>
<body>

<% ' Databaseforbindelse oprettes
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("db1.mdb")
Conn.Open DSN

Response.Buffer = True

mode = Request("mode")
if mode = "" then

strSQL = select * from users where user = Request.Cookies("AsdevUser")("navn") and pass Request.Cookies("AsdevUser")("pass")

If rs.EOF or rs.BOF Then

' Hvis korrekt sættes session til JA
  Session("user") = "JA"
  Session.Timeout = 60

Else %>

<form method="post" action="default.asp?mode=login">
<table border="1">
<tr><td>Login:</td><td><input type="text" name="login"></td></tr>
<tr><td>Password:</td><td><input type="text" name="password"></td></tr>
<tr><td>Gem login <input type="checkbox" name="save"></td><td align="right"><input type="submit" value="Login"></td></tr>
</form>

<% end if

elseif mode = "login" and Request.ServerVariables("REQUEST_METHOD") = "POST" then

strSQL = select * from users where username = Request.Form("navn") and where pass = Request.Form("pass")

If rs.EOF or rs.BOF Then

' Hvis korrekt sættes session til JA
  Session("user") = "JA"
  Session.Timeout = 60

end if

If Request.Form("save") = "yes" and Session("user") = "JA" then

Request.Cookies("AsdevUser")("user") = ('" & Request.Form("user") & "')
Request.Cookies("AsdevUser")("pass") = ('" & Request.Form("pass") & "')

Response.Cookies("AsdevUser").Expires = Date+365

end if

elseif mode = "loggedin" then

If Session("user") <> "JA" Then
  Response.redirect "testlogin.asp"
End If %>
Du er nu logget ind!!

<% end if

' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing
%>

</body>
</html>
Avatar billede medions Nybegynder
25. juni 2002 - 01:39 #1
Hvad er det den ikke gider? -kommer den med nogen fejl? hvad er det der er galt???
//>Rune
Avatar billede tmceu Praktikant
25. juni 2002 - 01:42 #2
Request.Cookies("AsdevUser")("user") = ('" & Request.Form("user") & "')
Request.Cookies("AsdevUser")("pass") = ('" & Request.Form("pass") & "')

Response.Cookies("AsdevUser").Expires = Date+365

Ville jeg ændre til

Request.Cookies("AsdevUser")("user") = Request.Form("user")
Request.Cookies("AsdevUser")("pass") = Request.Form("pass")

Response.Cookies("AsdevUser").Expires = DateAdd("d", 365, date())

Men ved ikke om det er problemet ?
Avatar billede tmceu Praktikant
25. juni 2002 - 01:44 #3
Og så kunne dette også ligne et problem:

If rs.EOF or rs.BOF Then

' Hvis korrekt sættes session til JA
  Session("user") = "JA"
  Session.Timeout = 60

Du kontrollerer på om recordsettet er tomt, er det det, sætter du dine værdier. Mon ikke det skulle være:

If Not rs.EOF And Not rs.BOF Then

' Hvis korrekt sættes session til JA
  Session("user") = "JA"
  Session.Timeout = 60
Avatar billede werd Nybegynder
25. juni 2002 - 03:00 #4
hvad er fejlen her:

<html>
<body>

<% ' Databaseforbindelse oprettes
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("db1.mdb")
Conn.Open DSN

If Request.Cookies("AsdevUser")("user") = "" then %>

<form method="post" action="default.asp?mode=login">
<table border="1">
<tr><td>Login:</td><td><input type="text" name="login"></td></tr>
<tr><td>Password:</td><td><input type="text" name="password"></td></tr>
<tr><td>Gem login <input type="checkbox" name="save"></td><td align="right"><input type="submit" value="Login"></td></tr>
</form>

<% end if

strUser = Request.Cookies("AsdevUser")("user")
strPass = Request.Cookies("AsdevUser")("pass")

strSQL = "Select * from users where user = strUser"

Set rs = Conn.Execute(strSQL)

If Not rs.EOF And Not rs.BOF Then

' Hvis korrekt sættes session til JA
  Session("user") = "JA"
  Session.Timeout = 60

end if

Conn.Close
Set Conn = Nothing
%>
</body>
</html>
Avatar billede tmceu Praktikant
25. juni 2002 - 03:55 #5
Det er lidt svært at sige præcist hvad der er galt, da du ikke er særlig informativ omkring hvad der sker/ikke sker og ikke mindst hvad du forventer der skal ske!

Men der er et par problemer:

1. Du kontrollerer om brugeren i cookien er tom og udskriver i så fald en formular inde i din If blok. Men herefter kontrollerer du alligevel brugeren i cookien i databasen, selv om der lge er udskrevet en login formular.

Du bør "pakke" det hele ind i én If-Else blok så der i tilfælde af, at der ikke findes et brugernavn i cookien, uskrives en login formular og scriptet derefter stopper. Dette kunne også løses med en Response.End

2. Hvis login formulares action (default.asp) er ovenstående side, vil du aldrig kunne logge ind, med mindre du allerede har en cookie fra en anden side. Der er ingen sammenhæng mellem værdierne der indtastes i formularen og dette script. Værdierne fra formularen finde i Request.Form("login") og Request.Form("password"), men der "kontrolleres" udelukkende på cookien.

P.S. Der havde indsneget sig en lille fejl i mit tidligere svar vedr. cookies. Når du skal skrive til en cookie, skal det altid foregå på Response objektet:

Response.Cookies("AsdevUser")("user") = Request.Form("user")
Response.Cookies("AsdevUser")("pass") = Request.Form("pass")
Response.Cookies("AsdevUser").Expires = DateAdd("d", 365, date())
Avatar billede werd Nybegynder
25. juni 2002 - 13:49 #6
Ja, det virker nu!!
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester