Avatar billede plato Juniormester
15. februar 2004 - 21:42 Der er 33 kommentarer og
1 løsning

Hjælp til autologin ASP

Hejsa NG.

Jeg har prøvet at få hjælp til noget autologin der ikke virkede. Men dette hjalp ikke.

Derfor spørger jeg om der er en venlig sjæl der vil lave et nyt autologin system til mig. En lille checkbox som brugeren skal krydse af inden han/hun trykker login.

Først kommer siden hvor loginformen er:

<En masse HTML-kode>
<%
If Session("login") = False THEN
%>
<form method="post" name="adminlogin" action="opret.asp?mode=check">
<span class="tekstboks">Brugernavn:</span><br>
<input class="forms" size="20" name="username" value="<%=Username%>"><br>
<span class="tekstboks">Password:</span><br>
<input class="forms" size="20" type="password" name="password" value="<%=Password%>"><br><input class="formsknap"  type="submit" value="Login" name="Action"><br><br><br>
<a href="login.asp" title="Opret ny bruger">Opret bruger</a><br>
<a href="opret.asp" title="F&aring; tilsendt dit password">Glemt password</a><br>
</form>
<%
Else
Response.write("<span class=tekstboks>" & session("user") & ", du har nu følgende muligheder:</span><br><br>")
Response.write("<a href=profile.asp?mode=own_profile>Ret profil</a><br><a href=>Se dine film</a><br><a href=>Tilføj film</a><br><a href=>Slet film</a><br><a href=>Se andres film</a>")
Response.write("<form method=post action=logout.asp><input type=submit class=formsknap value=Logout></form>")
End If
%>

Så kommer filen der behandler login'et:

<%
If Request.ServerVariables("REQUEST_METHOD") = "POST" THEN
' Logon
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open Application("Provider")
Sql = "SELECT user, id, lastlogon, email FROM users WHERE user = '"& CleanText(Request.Form("username")) &"' AND password = '"& CleanText(Request.Form("password")) &"'"
Set Rs = Server.CreateObject("ADODB.RecordSet")
Rs.Open Sql, Conn, 1,1
If Rs.RecordCount = 1 THEN
Session("login") = True
Session("user") = Rs("User")
Session("id") = Rs("id")
Session("lastlogon") = Rs("lastlogon")
session("email") = Rs("email")
Sql = "UPDATE users SET lastlogon = #"& Date() &"# WHERE id = " & Rs("id")
Conn.Execute(Sql)
Rs.Close
Response.redirect(Request.ServerVariables("HTTP_REFERER"))
End If
Set Rs = Nothing
Conn.Close
Set Conn = Nothing
End If
%>

Jeg har lavet en kolonne i tabellen 'users' der hedder 'autolog' hvor den er sat til Ja/Nej.

Nogen der kan hjælpe?
Avatar billede plato Juniormester
15. februar 2004 - 21:49 #1
I den første del hedder det ikke:
<form method="post" name="adminlogin" action="opret.asp?mode=check">

men

<form method="post" name="adminlogin" action="opret.asp">
Avatar billede eagleeye Praktikant
15. februar 2004 - 22:05 #2
Søger du et nyt login system??

>>Jeg har lavet en kolonne i tabellen 'users' der hedder 'autolog' hvor den er sat til Ja/Nej.
For autologin virker skal det gemmen i en cookie, da man jo ikke kender hvilken bruger der vil logge ind.
Avatar billede plato Juniormester
15. februar 2004 - 22:07 #3
Nej jeg søger ikke et nyt loginsystem.
Men netop som du skrive en cookie system, så brugeren kan vælge at blive husket.
Gerne flettet ind i det nuværende.
Avatar billede plato Juniormester
15. februar 2004 - 22:08 #4
Jeg kan også henvise dig til det andet spm, som ikke kunne lykkedes at få i gang?
Avatar billede eagleeye Praktikant
15. februar 2004 - 22:12 #5
Ok, det skal tilrettes.
Ja, er det samme kode i det andet spm?
Avatar billede eagleeye Praktikant
15. februar 2004 - 22:13 #6
Avatar billede eagleeye Praktikant
15. februar 2004 - 22:15 #7
Der er noget forskel på koden i den del som logger en ind??
Skal det være i dette eller det andet?
Avatar billede eagleeye Praktikant
15. februar 2004 - 22:28 #8
Umiddelbart skal diss linjer rettes:
If Session("login") = False THEN
%>
<form method="post" name="adminlogin" action="opret.asp?mode=check">
<span class="tekstboks">Brugernavn:</span><br>
<input class="forms" size="20" name="username" value="<%=Username%>"><br>
<span class="tekstboks">Password:</span><br>
<input class="forms" size="20" type="password" name="password" value="<%=Password%>"><br><input class="formsknap"  type="submit" value="Login" name="Action"><br><br><br>
<a href="login.asp" title="Opret ny bruger">Opret bruger</a><br>
<a href="opret.asp" title="F&aring; tilsendt dit password">Glemt password</a><br>
</form>
<%

Til dette sådan den hendter fra cookien og den også har en checkbox:

If Session("login") = False THEN
huskmig = Request.Cookies("login")("huskmig")
if huskmig = "yes" then
  Username = Request.Cookies("login")("brugernavn")
  Password = Request.Cookies("login")("password")
end if
%>
<form method="post" name="adminlogin" action="opret.asp?mode=check">
<span class="tekstboks">Brugernavn:</span><br>
<input class="forms" size="20" name="username" value="<%=Username%>"><br>
<span class="tekstboks">Password:</span><br>
<input class="forms" size="20" type="password" name="password" value="<%=Password%>"><br>
<span class="tekstboks">Husk mig:</span><br>
<input class="forms" type="checkbox" name="huskmig" <% if huskmig = "yes" then Response.Write " CHECKED "%> >
<input class="formsknap"  type="submit" value="Login" name="Action"><br><br><br>
<a href="login.asp" title="Opret ny bruger">Opret bruger</a><br>
<a href="opret.asp" title="F&aring; tilsendt dit password">Glemt password</a><br>
</form>
<%



-------
Koden til filen der behandler login'et skal rettes til dette:

<%
If Request.ServerVariables("REQUEST_METHOD") = "POST" THEN
  fhuskmig = Request.Form("huskmig")
  if fhuskmig <> "" then
    Response.Cookies("login")("huskmig") = "yes"
  else
    Response.Cookies("login")("huskmig") = "no"
  end if
  Response.Cookies("login").Expires = date() + 365
' Logon
  Set Conn = Server.CreateObject("ADODB.Connection")
  Conn.Open Application("Provider")

  Sql = "SELECT user, id, lastlogon, email FROM users WHERE user = '"& CleanText(Request.Form("username")) &"' AND password = '"& CleanText(Request.Form("password")) &"'"
  Set Rs = Server.CreateObject("ADODB.RecordSet")
  Rs.Open Sql, Conn, 1,1
  If Rs.RecordCount = 1 THEN
    if fhuskmig <> "" then
      Response.Cookies("login")("brugernavn") = username
      Response.Cookies("login")("password") = password
      Response.Cookies("login").Expires = date() + 365
    end if
    Session("login") = True
    Session("user") = Rs("User")
    Session("id") = Rs("id")
    Session("lastlogon") = Rs("lastlogon")
    session("email") = Rs("email")
    Sql = "UPDATE users SET lastlogon = #"& Date() &"# WHERE id = " & Rs("id")
    Conn.Execute(Sql)
    Rs.Close
    Response.redirect(Request.ServerVariables("HTTP_REFERER"))
  End If
  Set Rs = Nothing
  Conn.Close
  Set Conn = Nothing
End If
%>
Avatar billede plato Juniormester
15. februar 2004 - 22:30 #9
Eagleeye.

Jeg kigger lige på det lidt senere i aften. Lader dig høre nærmere. Du har vel mailen slået til :-)
Avatar billede eagleeye Praktikant
15. februar 2004 - 22:32 #10
Ja det har jeg, men jeg går nok i seng ved 24 tiden :)
Avatar billede plato Juniormester
15. februar 2004 - 22:59 #11
Den logger godtnok på, men logger jeg browseren uden af logge af, er autologin ikke i funktion men man skal logge på igen.
Avatar billede plato Juniormester
15. februar 2004 - 23:01 #12
Jeg skal ikke oprette noget i DB'en, vel?
Avatar billede eagleeye Praktikant
15. februar 2004 - 23:04 #13
Nej der skal ikke være noget i db'en. Lige nu er den faktisk også kun "husk mig" funktion. Så prøv tilføje noget kode imellem diss to:

</form>
<%
Else
Response.write("<span class=tekstboks>" & session("user") & ", du har nu følgende


sådan her:

</form>
<%
if huskmig="yes" then
%>
<script>
  document.adminlogin.submit();
</script>
<%
end if
Else
Response.write("<span class=tekstboks>" & session("user") & ", du har nu følgende
Avatar billede plato Juniormester
15. februar 2004 - 23:10 #14
Jeg døjer meget med serveren ligenu. Men umiddelbart kan jeg nu se at den sender én videre til opret.asp. Som er den side der behandler login'et og opretter en på ny.
Avatar billede plato Juniormester
15. februar 2004 - 23:18 #15
Den sender én til opret.asp, og autologin virker ikke. Hvis du lyster kan jeg sende de 2 filer?...Kun hvis du lyster.
Avatar billede eagleeye Praktikant
15. februar 2004 - 23:20 #16
Ja det står i formen's action tag at den skal send til opret.asp :

<form method="post" name="adminlogin" action="opret.asp">
Avatar billede eagleeye Praktikant
15. februar 2004 - 23:20 #17
Det kode som behandler login ligger det i opret.asp filen?
Avatar billede plato Juniormester
15. februar 2004 - 23:22 #18
Men hvis jeg piller dette her væk:

<%
if huskmig="yes" then
%>
<script>
  document.adminlogin.submit();
</script>

forbliver den på den side hvorpå man logger ind.
Opret.asp behandler kun login't, og det er menigen at hvis brugeren ikke eksistere så viser den selve siden opret.asp, hvor brugeren så kan oprette sig.
Men den side skal den ikke vise når login er ok.
Avatar billede plato Juniormester
15. februar 2004 - 23:23 #19
Opret.asp er delt i to. først asp koden som behandler login data.
Dernæst noget HTML + form kode hvor en bruger kan oprette sig.
Avatar billede plato Juniormester
15. februar 2004 - 23:24 #20
Egentlig kunne jeg ligeså godt have det der behandler login data i opret.asp, som include i toppen. Så det er der når som helst. Resten af opret.asp er som det jo antyder, en oprettelse funktion til brugerne.
Avatar billede eagleeye Praktikant
15. februar 2004 - 23:26 #21
Har den udfyldt formen?
og virker det hvis man selv logger ind?
Avatar billede plato Juniormester
15. februar 2004 - 23:26 #22
Autologin har ikke udfyldt formen med Bruger og pass. Kun checkboxen af vinget af.
Avatar billede plato Juniormester
15. februar 2004 - 23:27 #23
Hvis man selv logget ind, logger den fint ind.
Lukker man browseren og åbner en ny, og går ind på siden går det galt.
Hvis man logger af og på manuelt virker det helt fint.
Avatar billede plato Juniormester
15. februar 2004 - 23:27 #24
Vil du selv prøve?
Avatar billede eagleeye Praktikant
15. februar 2004 - 23:31 #25
Hvis formen ikke er udfyldt får den ikke hentet data fra cookien korrekt, men hvis checkboxen er med kryds i må det være hvor cookien gemmes det går galt.
Ja har du en side?

Men så lige noget, inde i den fil som gemmer brugernavn og password i cookien ret lige diss linjer:

    if fhuskmig <> "" then
      Response.Cookies("login")("brugernavn") = username
      Response.Cookies("login")("password") = password
      Response.Cookies("login").Expires = date() + 365
    end if

Til:

    if fhuskmig <> "" then
      Response.Cookies("login")("brugernavn") = Request.Form("username")
      Response.Cookies("login")("password") = Request.Form("password")
      Response.Cookies("login").Expires = date() + 365
    end if


og prøv at logge ind igen.
Avatar billede plato Juniormester
15. februar 2004 - 23:34 #26
http://www.filmnet.dk/default2.asp

Bruger: Test
Pass: test
Avatar billede plato Juniormester
15. februar 2004 - 23:36 #27
Så virker det.

Det var det sidste. Nu skal brugeren bare trykke login :-)
Avatar billede eagleeye Praktikant
15. februar 2004 - 23:36 #28
nu kan den da huske navn og password rigtigt så vidt jeg kan se.
Avatar billede eagleeye Praktikant
15. februar 2004 - 23:37 #29
Ja nu virker den som "husk mig"

Skal det være som autologin skal du tilføjer dette igen  15/02-2004 23:04:56
Så sender den selv formen hvis man har valgt "husk mig"
Avatar billede plato Juniormester
15. februar 2004 - 23:38 #30
Jepper.. Det var som sagt den sidste rettelse :-)

Tusind tak!

Hvis nu du også smider et svar :-)

Du må egentlig også gerne smide et her:
http://www.eksperten.dk/spm/465680
Avatar billede plato Juniormester
15. februar 2004 - 23:39 #31
Okies. Jeg bruger 15/02-2004 23:04:56 :)
Avatar billede plato Juniormester
15. februar 2004 - 23:40 #32
Hov... Hvis man bruger
<%
if huskmig="yes" then
%>
<script>
  document.adminlogin.submit();
</script>
<%
end if
Else

Kan man ikke logge ud.

Men jeg benytter den anden måde, så brugeren bare skal trykke Login. Lidt skal de også lave ;-)
Avatar billede eagleeye Praktikant
15. februar 2004 - 23:42 #33
hmm ja det rigtig så vil den hele tiden logge ind igen :)
Avatar billede eagleeye Praktikant
15. februar 2004 - 23:44 #34
Så skal du lave to en Autologin og en Huskmig,
og hvis man logger ud skal man fjerne autologin. Så kan man styre det på den måde.
For hvis man fjerne huskmig vil den så ikke vise brugernavn og password.
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