Avatar billede jps6kb Novice
14. juli 2004 - 10:35 Der er 31 kommentarer og
3 løsninger

Få login til at sende bruger tilbage til den side han kom fra

Jeg er ved at lege med et forum.
Jeg har lavet ådan at anonyme brugere kan læse grupper og se tråde... men ikke de indlæg der er i trådene.
Hvis de klikker på en tråde bli'r de sendt til en login side.
De redirecter så til forum.asp igen... jeg vil gerne ha' at de, istedet for at komme til forum forsiden, kommer til den side der sendte dem til login.

Ex. hvis de klikker på en tråd ser sådan ud :

<a href="vistraad.asp?traadnr=<%=data("id")%>&traadnavn=<% = data.Fields ("navn")%>"><% = data.Fields ("navn")%></a>

Vistraad.asp har så en:

<%
if not session("login") = "1" Then
Response.redirect("login.asp")
end if
%>

Hvordan gemmer jeg det i redirect på login siden ?
Avatar billede -mundi- Nybegynder
14. juli 2004 - 10:44 #1
<%
if not session("login") = "1" Then
  response.redirect "login.asp?r="&server.urlencode(request.servervariables("script_name")&"?"&request.querystring)
end if
%>


og så på din loginside

<%
'login stuff
session("login") = "1"
response.redirect(request.querystring("r"))
%>
Avatar billede mini-me Nybegynder
14. juli 2004 - 10:46 #2
response.Redirect(request.ServerVariables("HTTP_REFERER"))
Avatar billede mini-me Nybegynder
14. juli 2004 - 10:47 #3
Virker noget bedre end en querystring...
Avatar billede jps6kb Novice
14. juli 2004 - 10:51 #4
!!-mundi-!!

Response object error 'ASP 0158 : 80004005'

Missing URL

/go1/login.asp, line 28

A URL is required.


!!mini-me!!

Den tømmer bare tekstfelterne og bliver på login.asp ?
Avatar billede mini-me Nybegynder
14. juli 2004 - 10:53 #5
Jps6kb hvordan laver du dit login check?

Hvis det hele foregår i én fil så virker det nu fint... men hvis du eks. har login.asp og så når du poster bliversendt til checklogin.asp så vil den sende brugeren tilbage til login.asp mn hvis du nu havde hele scriptet kørende i login.asp ville den sende brugeren tilbage til den korrekte side..
Avatar billede jps6kb Novice
14. juli 2004 - 10:55 #6
Det hele er i login.asp...

<%
SET RS = Server.CreateObject("ADODB.Connection")
RS.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("database.mdb")

If Request("mode") = "Check" then

Function unQuote(strTekst)
  strTekst = Trim(strTekst)
  unQuote = Replace(strTekst,"%","53")
End Function

    ' Gemmer formfelterne i Variabler
        strUsername = unQuote(request("username"))
        strPassword = unQuote(request("password"))

  Sql = "Select Count(*) as Found from user where (username = '" & strUsername  & "') and (password ='" & strPassword  & "')"
  Set LO = RS.Execute(Sql)
  if LO("Found") = 0 then
    Session("login") = ""
    error = "Du blev ikke godkendt af systemet"
  else
  strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("database.mdb")
  Set conn = Server.CreateObject("ADODB.Connection")
  conn.Open strDSN
  strSQL = "SELECT * FROM user where (username = '" & Request("username") & "') and (password ='" & Request("password") & "')"
  Set ez = conn.Execute(strSQL)
  response.Redirect(request.ServerVariables("HTTP_REFERER"))
    Response.Redirect "forum.asp"
    EZ.Close
    RS.Close
    Conn.Close
  end if
end if
%>


<form method="POST" action="login.asp">
<input type="hidden" name="mode" VALUE="Check">
<b>Bruger</b>
<input class='text' type='text' name='username' size='15' value="<%=strbrugernavn%>">
<br>
<b>Kode</b>
<input class="text" type="password" value="<%=strpassword%>" name="password" size="15">
<br/>
<input class="text" type="submit" value="Login"><%=error%>
</form>
Avatar billede jps6kb Novice
14. juli 2004 - 10:56 #7
2 sekunder... fik da ikke slettet den anden redirect alligevel ;)
Avatar billede -mundi- Nybegynder
14. juli 2004 - 11:00 #8
<%
SET RS = Server.CreateObject("ADODB.Connection")
RS.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("database.mdb")
if(len(request.querystring("r"))>0) then
    session("r")=request.querystring("r")
end if
If Request("mode") = "Check" then

Function unQuote(strTekst)
  strTekst = Trim(strTekst)
  unQuote = Replace(strTekst,"%","53")
End Function

    ' Gemmer formfelterne i Variabler
        strUsername = unQuote(request("username"))
        strPassword = unQuote(request("password"))

  Sql = "Select Count(*) as Found from user where (username = '" & strUsername  & "') and (password ='" & strPassword  & "')"
  Set LO = RS.Execute(Sql)
  if LO("Found") = 0 then
    Session("login") = ""
    error = "Du blev ikke godkendt af systemet"
  else
  strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("database.mdb")
  Set conn = Server.CreateObject("ADODB.Connection")
  conn.Open strDSN
  strSQL = "SELECT * FROM user where (username = '" & Request("username") & "') and (password ='" & Request("password") & "')"
  Set ez = conn.Execute(strSQL)
  if(len(session("r"))=0) then
      'forum default
      response.Redirect("forum.asp")
  else
      dim r : r = session("r")
    session("r")=""
      response.Redirect(r)
  end if
 
    Response.Redirect "forum.asp"
    EZ.Close
    RS.Close
    Conn.Close
  end if
end if
%>


<form method="POST" action="login.asp">
<input type="hidden" name="mode" VALUE="Check">
<b>Bruger</b>
<input class='text' type='text' name='username' size='15' value="<%=strbrugernavn%>">
<br>
<b>Kode</b>
<input class="text" type="password" value="<%=strpassword%>" name="password" size="15">
<br/>
<input class="text" type="submit" value="Login"><%=error%>
</form>


Er utestet
Avatar billede mini-me Nybegynder
14. juli 2004 - 11:02 #9
Mundi, den sender jo ikke brugeren tilbage til den korrekte side... han kommer jo bare til foum.asp...
Avatar billede jps6kb Novice
14. juli 2004 - 11:04 #10
Tror bare han overså den x-tra redirect som jeg havde posted før...
Avatar billede jps6kb Novice
14. juli 2004 - 11:04 #11
Jeg får ikke mini-me's til at virke...


<%
SET RS = Server.CreateObject("ADODB.Connection")
RS.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("database.mdb")

If Request("mode") = "Check" then

Function unQuote(strTekst)
  strTekst = Trim(strTekst)
  unQuote = Replace(strTekst,"%","53")
End Function

    ' Gemmer formfelterne i Variabler
        strUsername = unQuote(request("username"))
        strPassword = unQuote(request("password"))

  Sql = "Select Count(*) as Found from user where (username = '" & strUsername  & "') and (password ='" & strPassword  & "')"
  Set LO = RS.Execute(Sql)
  if LO("Found") = 0 then
    Session("login") = ""
    error = "Du blev ikke godkendt af systemet"
  else
  strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("database.mdb")
  Set conn = Server.CreateObject("ADODB.Connection")
  conn.Open strDSN
  strSQL = "SELECT * FROM user where (username = '" & Request("username") & "') and (password ='" & Request("password") & "')"
  Set ez = conn.Execute(strSQL)
    Session("login") = ez("admin")
    response.Redirect(request.ServerVariables("HTTP_REFERER"))
    EZ.Close
    RS.Close
    Conn.Close
  end if
end if
%>
Avatar billede -mundi- Nybegynder
14. juli 2004 - 11:06 #12
Så brug mit, det virker fint

Mini-me , slf bliver man da sendt tilbage til den rigtige side ?
Avatar billede mini-me Nybegynder
14. juli 2004 - 11:06 #13
Så er der lige den her... ;-) Det nok ikke den bedste metode men den virker..
<%
SET RS = Server.CreateObject("ADODB.Connection")
RS.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("database.mdb")

If Request("mode") = "Check" then

Function unQuote(strTekst)
  strTekst = Trim(strTekst)
  unQuote = Replace(strTekst,"%","53")
End Function

    ' Gemmer formfelterne i Variabler
        strUsername = unQuote(request("username"))
        strPassword = unQuote(request("password"))

  Sql = "Select Count(*) as Found from user where (username = '" & strUsername  & "') and (password ='" & strPassword  & "')"
  Set LO = RS.Execute(Sql)
  if LO("Found") = 0 then
    Session("login") = ""
    error = "Du blev ikke godkendt af systemet"
  else
  strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("database.mdb")
  Set conn = Server.CreateObject("ADODB.Connection")
  conn.Open strDSN
  strSQL = "SELECT * FROM user where (username = '" & Request("username") & "') and (password ='" & Request("password") & "')"
  Set ez = conn.Execute(strSQL)
    Session("login") = ez("admin")
    %>
<script language=javascript>
history.go(-3)
</script>
<%
    EZ.Close
    RS.Close
    Conn.Close
  end if
end if
%>
Avatar billede mini-me Nybegynder
14. juli 2004 - 11:07 #14
Mundi: Læs hvad han beder om:

De redirecter så til forum.asp igen... jeg vil gerne ha' at de, istedet for at komme til forum forsiden, kommer til den side der sendte dem til login.

Ex. hvis de klikker på en tråd ser sådan ud :

<a href="vistraad.asp?traadnr=<%=data("id")%>&traadnavn=<% = data.Fields ("navn")%>"><% = data.Fields ("navn")%></a>
Avatar billede mini-me Nybegynder
14. juli 2004 - 11:08 #15
Mundi, min fejl... var lidt for hurtig da jeg gennemgik din kode...beklager...
Avatar billede jps6kb Novice
14. juli 2004 - 11:09 #16
.mundi.

Det er det samme med din...
Avatar billede -mundi- Nybegynder
14. juli 2004 - 11:09 #17
Ja, det er derfor jeg overfører sidenavn (request.servervariables("script_name")) same querystring som r , gemmer det i en session og sender brugeren tilbage til den side hvis man er godkendt af systemet :

if(len(session("r"))=0) then
      'forum default
      response.Redirect("forum.asp")
  else
      dim r : r = session("r")
    session("r")=""
      response.Redirect(r)
  end if
Avatar billede -mundi- Nybegynder
14. juli 2004 - 11:09 #18
hvad er det samme med min ?
Avatar billede -mundi- Nybegynder
14. juli 2004 - 11:10 #19
Og har du indsat den lille bid kode ? :

<%
if not session("login") = "1" Then
  response.redirect "login.asp?r="&server.urlencode(request.servervariables("script_name")&"?"&request.querystring)
end if
%>

på vistraad.asp ?
Avatar billede jps6kb Novice
14. juli 2004 - 11:11 #20
At den bliver på login.asp

start på vistraad.asp :

<%
if not session("login") = "1" Then
  response.redirect "login.asp?r="&server.urlencode(request.servervariables("script_name")&"?"&request.querystring)
end if
%>
Avatar billede -mundi- Nybegynder
14. juli 2004 - 11:16 #21
Hvis den bliver på login.asp tyder det på at den aldrig kommer ind i valierings scriptet.
Prøv at indsætte response.write(Request("mode") = "Check") i starten af siden, den skulle gerne skrive false første gang, og true når man sender formen
Avatar billede jps6kb Novice
14. juli 2004 - 11:17 #22
-mundi-
Jo, for hvis jeg går ind i forum igen kan jeg godt komme ind i indlæg... så jeg er logget ind... den redirecter bare forkert...

mini : -3 er for langt ... -2 = lige over indlæg ... -1 burde være indlæg, men det er login... ? Den tager ikke vistraad.asp som en side den har været inde på ?
Avatar billede -mundi- Nybegynder
14. juli 2004 - 11:21 #23
Heh, det kunne være at man skulle smide Session("login")=1 ind et eller andet sted :-)

<%
SET RS = Server.CreateObject("ADODB.Connection")
RS.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("database.mdb")

If Request("mode") = "Check" then

Function unQuote(strTekst)
  strTekst = Trim(strTekst)
  unQuote = Replace(strTekst,"%","53")
End Function

    ' Gemmer formfelterne i Variabler
        strUsername = unQuote(request("username"))
        strPassword = unQuote(request("password"))

  Sql = "Select Count(*) as Found from user where (username = '" & strUsername  & "') and (password ='" & strPassword  & "')"
  Set LO = RS.Execute(Sql)
  if LO("Found") = 0 then
    Session("login") = ""
    error = "Du blev ikke godkendt af systemet"
  else
  Session("login")=1
response.Redirect(request.ServerVariables("HTTP_REFERER"))

    RS.Close
    Conn.Close

  end if
end if
%>
Avatar billede -mundi- Nybegynder
14. juli 2004 - 11:22 #24
hov
Session("login")="1"
Avatar billede jps6kb Novice
14. juli 2004 - 11:22 #25
Nej nej... det får den her:

    Session("login") = ez("admin")

Jeg bruger admin til at styre forskellige adgangsniveauer... men den konto jeg tester med har admin:1 ... og jeg bliver jo også logget ind ..
Avatar billede -mundi- Nybegynder
14. juli 2004 - 11:26 #26
Kan du ikke poste den kode du har testet mit forslag med ? For det virker fint her
Avatar billede jps6kb Novice
14. juli 2004 - 11:33 #27
Login :

<%
SET RS = Server.CreateObject("ADODB.Connection")
RS.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("database.mdb")

If Request("mode") = "Check" then

Function unQuote(strTekst)
  strTekst = Trim(strTekst)
  unQuote = Replace(strTekst,"%","53")
End Function

    ' Gemmer formfelterne i Variabler
        strUsername = unQuote(request("username"))
        strPassword = unQuote(request("password"))

  Sql = "Select Count(*) as Found from user where (username = '" & strUsername  & "') and (password ='" & strPassword  & "')"
  Set LO = RS.Execute(Sql)
  if LO("Found") = 0 then
    Session("login") = ""
    error = "Du blev ikke godkendt af systemet"
  else
    Session("login") = "1"
response.Redirect(request.ServerVariables("HTTP_REFERER"))

    RS.Close
    Conn.Close

  end if
end if
%>


<html>
<head>

<link rel="STYLESHEET" type="text/css" href="style.css">

<title>Forum login</title>

</head>
<body>

<form method="POST" action="login.asp">
<input type="hidden" name="mode" VALUE="Check">
<b>Bruger</b>
<input class='text' type='text' name='username' size='15' value="<%=strbrugernavn%>">
<br>
<b>Kode</b>
<input class="text" type="password" value="<%=strpassword%>" name="password" size="15">
<br/>
<input class="text" type="submit" value="Login"><%=error%>
</form>

</body>
</html>



Vistraad :

<%
if not session("login") = "1" Then
  response.redirect "login.asp?r="&server.urlencode(request.servervariables("script_name")&"?"&request.querystring)

end if
%>


<!--#include file="connect.asp"-->

<%
Set data = Server.CreateO.............
Avatar billede jps6kb Novice
14. juli 2004 - 11:34 #28
Den rydde bare felterne i login.asp men jeg bliver logget ind.
Avatar billede jps6kb Novice
14. juli 2004 - 11:35 #29
Kunne man alternativt ikke gemme url'en som en variabel i vistraad.asp i login-delen ? og så redir' til variablen ?
Avatar billede -mundi- Nybegynder
14. juli 2004 - 11:37 #30
Det er bare blevet rodet lidt sammen, kommer med det lige om 2 seks
Avatar billede -mundi- Nybegynder
14. juli 2004 - 11:43 #31
Ryddet lidt op i det

<%
Function unQuote(strTekst)
  strTekst = Trim(strTekst)
  unQuote = Replace(strTekst,"%","53")
End Function

if(len(request.querystring("r"))>0) then
    session("r")=request.querystring("r")
end if

If Request("mode") = "Check" then
  SET conn = Server.CreateObject("ADODB.Connection")
  conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("database.mdb")
  ' Gemmer formfelterne i Variabler
  strUsername = unQuote(request("username"))
  strPassword = unQuote(request("password"))

  sql = "SELECT * FROM user where (username = '" & strUsername & "') and (password ='" & strPassword & "')"
  Set rs = conn.Execute(Sql)
 
  if rs.eof then
    Session("login") = ""
    error = "Du blev ikke godkendt af systemet"
  else
    Session("login") = ez("admin")
    Conn.Close
    if(len(session("r"))=0) then
      'forum default
      response.Redirect("forum.asp")
    else
      r = session("r")
      session("r")=""
      response.Redirect(r)
    end if
  end if
end if
%>



<form method="POST" action="login.asp">
<input type="hidden" name="mode" VALUE="Check">
<b>Bruger</b>
<input class='text' type='text' name='username' size='15' value="<%=strbrugernavn%>">
<br>
<b>Kode</b>
<input class="text" type="password" value="<%=strpassword%>" name="password" size="15">
<br/>
<input class="text" type="submit" value="Login"><%=error%>
</form>
Avatar billede jps6kb Novice
14. juli 2004 - 11:47 #32
ez er ikke defineret...

Microsoft VBScript runtime error '800a000d'

Type mismatch: 'ez'

/go1/login.asp, line 25
Avatar billede -mundi- Nybegynder
14. juli 2004 - 11:48 #33
ret ez("admin") til rs("admin")
Avatar billede jps6kb Novice
14. juli 2004 - 11:51 #34
WuHu !!... så virkede det... jeg takker mange gange...
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