Avatar billede reimer7 Nybegynder
04. december 2003 - 14:47 Der er 15 kommentarer og
1 løsning

redirecting URL efter login

Jeg fandt en mulig løsning til mit spørgsmål (se: http://www.eksperten.dk/spm/433329), scriptet husker fint hvorfra brugeren kom, da linket blev klikket, men efter login eller registrering som bruger, bliver vedkommende ikke redirected til den side vedkommende ønskede:
Scriptet til loginsiden ser sådan ud;
<%
Dim HTTP_REFERRER
Response.ExpiresAbsolute = Now() - 1
Response.AddHeader "Cache-Control", "no-cache"
If Not(IsObject(Session("UID"))) Then
If Session("UID") = "" Then
HTTP_REFERRER = Request.ServerVariables("URL")
If Request.QueryString <> "" Then HTTP_REFERRER = HTTP_REFERRER & "?" & Request.QueryString
Response.Redirect "HTTP_REFERRER=" & Server.URLEncode(HTTP_REFERRER)
End If
End If
%>

Og siden til validering af brugeren;
<%
Dim adocon,rstest,sqltest,clear
clear=0

if request.querystring("login")="true" then

if request.form("username")="" then
response.write("<b>Brugernavn mangler</b><br><b>Du skal angive et brugernavn</b><br>")
response.write("<a href=""java script:history.go(-1)""><font color=""000000"">Klik her for at skrive et brugernavn</font></a>")
elseif request.form("password")="" then
response.write("<b>Password mangler</b><br><b>Du skal angive et password</b><br>")
response.write("<a href=""java script:history.go(-1)""><font color=""000000"">Klik her for at skrive et password</font></a>")
else

Set adoCon = Server.CreateObject("ADODB.Connection")
adoCon.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../fpdb/userlist.mdb")
set rstest = Server.CreateObject("ADODB.Recordset")
sqltest="Select * from users where username='" & request.form("username") & "' and parked=false"
rstest.open sqltest,adocon,2,3
if  not  rstest.eof then
    if request.form("password")=rstest("pass") then
    session("login")="true"
    session("username")=rstest("username")
    session("lastlogin")=rstest("lastlogin")
    session("logctr")=rstest("logctr")
    session("level")=rstest("level")
if request.form("username")="admin" then
    session("admin")="true"

    end if
rstest("logctr")=rstest("logctr")+1
rstest("lastlogin")=now()
rstest("ipadd")=request.servervariables("remote_addr")
rstest.update
    clear =1

rstest.close
set rstest=nothing
adocon.close
set adocon=nothing
else
response.write("<b>Ugyldig password!</b><br><b>Prøv igen</b><br>")
response.write("<a href=""java script:history.go(-1)""><font color=""000000"">Klik her for at skrive password igen</font></a>")
end if
else
response.write("Brugernavn eksisterer ikke!<br>Prøv igen eller kontakt webmaster.<br>")
response.write("<a href=""java script:history.go(-1)"">Klik her for at skrive dit brugernavn igen</a>")
end if
end if
end if
if session("admin")="true" then
response.redirect("admin.asp")
end if
if clear=1 then
%>
Du er nu logget på anmeldelsesbasen!<br>
<a href="anyprotectedpage.asp">Klik her for at fortsætte</a>
<%
end if
%>

Hvad skal der indsættes/ændres på valideringssiden for at videresende vedkommende tilbage til den ønskede side?
Avatar billede l_otto Nybegynder
04. december 2003 - 15:00 #1
hvad skriver den af fejl. eller hvad sker der når man logger ind ?
Avatar billede reimer7 Nybegynder
04. december 2003 - 15:07 #2
Den skriver "Du er nu logget på anmeldelsesbasen!" (lavet for at tjekke om den nu også logger mig på), men den side bliver droppet så snart I/jeg finder ud af hvordan den automatisk redirecter brugeren til den ønskede side
Avatar billede reimer7 Nybegynder
04. december 2003 - 15:11 #3
Når jeg klikker på det ønskede link, viser den http://www.xxx.dk/anmeldelser/login.asp?HTTP_REFERRER=%2Fblaeksprutten%2Faddform22%2Easp%3Fcatid%3D187%26catname%3DNaturvidenskab%26parentID%3D52%26Parentname%3DFaglitteratur i adresselinien og når man så har logget på, skulle den sende en videre til HTTP_REFERRER=%2Fblaeksprutten%2Faddform22%2Easp%3Fcatid%3D187%26catname%3DNaturvidenskab%26parentID%3D52%26Parentname%3DFaglitteratur
Avatar billede l_otto Nybegynder
04. december 2003 - 15:16 #4
det er vel i denne kode fejlen ligger ?

<%
Dim HTTP_REFERRER
Response.ExpiresAbsolute = Now() - 1
Response.AddHeader "Cache-Control", "no-cache"
If Not(IsObject(Session("UID"))) Then
If Session("UID") = "" Then
HTTP_REFERRER = Request.ServerVariables("URL")
If Request.QueryString <> "" Then HTTP_REFERRER = HTTP_REFERRER & "?" & Request.QueryString
Response.Redirect "HTTP_REFERRER=" & Server.URLEncode(HTTP_REFERRER)
End If
End If
%>


skal der være to End if ?
Avatar billede reimer7 Nybegynder
04. december 2003 - 15:28 #5
Aner det ikke, men det virker selvom at der er 2 End if'er.
Jeg tro nu at det er på valideringssiden den er gal: Når en bruger klikker på den ønskede link, bliver man videresendt til en login og tilmeldingsside (loginasp), når man så klikker på 'login' eller 'registrér mig' bliver man valideret og er det hele iorden skulle man så redirectes til den siden man ønskede i første omgang
Avatar billede l_otto Nybegynder
04. december 2003 - 15:31 #6
her laver den jo bare sessions og ikke noget med redirect selvom man er godkendt...

Set adoCon = Server.CreateObject("ADODB.Connection")
adoCon.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../fpdb/userlist.mdb")
set rstest = Server.CreateObject("ADODB.Recordset")
sqltest="Select * from users where username='" & request.form("username") & "' and parked=false"
rstest.open sqltest,adocon,2,3
if  not  rstest.eof then
    if request.form("password")=rstest("pass") then
    session("login")="true"
    session("username")=rstest("username")
    session("lastlogin")=rstest("lastlogin")
    session("logctr")=rstest("logctr")
    session("level")=rstest("level")
if request.form("username")="admin" then
    session("admin")="true"
Avatar billede reimer7 Nybegynder
04. december 2003 - 15:34 #7
Nej, hvordan indsætter jeg en http-referer så den virker så snart man er valideret?
Avatar billede l_otto Nybegynder
04. december 2003 - 15:38 #8
hvad med nederst:

if session("admin")="true" then
response.redirect("admin.asp")

før den skriver du så.

if session("login")="true" then
response.redirect("nyside.asp")
Avatar billede reimer7 Nybegynder
04. december 2003 - 15:43 #9
if session("admin")="true" then
response.redirect("nyside.asp")
lyder fornuftig, men hvad med http_referer ... her linkes der jo til en absolut href
Avatar billede l_otto Nybegynder
04. december 2003 - 15:45 #10
jamen du kan jeg ikke lige gennemskue ... sorry..
Avatar billede reimer7 Nybegynder
04. december 2003 - 15:47 #11
It's okay :)
Avatar billede reimer7 Nybegynder
04. december 2003 - 15:59 #12
BYTW. sætter jeg
if session("login")="true" then
response.redirect("index.asp")
på valideringssiden får jeg en href:
http://www.xxx.dk/anmeldelser/loginpro.asp?login=true
med fejl 500
Avatar billede l_otto Nybegynder
04. december 2003 - 19:28 #13
jamen har du en side der hedder loginpro.asp ?
Avatar billede reimer7 Nybegynder
05. december 2003 - 10:50 #14
Jeg har en side der hedder login.asp (her skriver en bruger sin registerering eller skriver sit login og password). Når vedkommende klikker 'send' bliver han/hun valideret/registreret via loginpro.asp.

login.asp ser sådan ud:
<html>
<head>
<title>Log in Form</title>
<META name=description content="cyberkenetics--visual basic area Roi Besiera">
<META name="keywords" content="visual basic programs,solutions,downloads,guestbook,visual basic">
<META name="ROBOTS" content="ALL"> 
<META name="rating" content="General">
<meta http-equiv="Expires" CONTENT="0">
<meta http-equiv="Cache-Control" CONTENT="no-cache">
<meta http-equiv="Pragma" CONTENT="no-cache">
<META name="rating" content="General">
<META name="author" content="Roy Besiera">
<meta http-equiv="Content-class" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="user.css" class="text/css">
<script language="Javascript" class="text/javascript">
<!--

function openwindow(theURL,winName,features)
{
  window.open(theURL,winName,features);
}
-->
</script>
</head>

<body bgcolor="#FFFFFF" text="#000000">
<tr><td class="small"><h3>Registrér dig hos Blæksprutten</h3>
</td></tr>
<tr><td class="small">
<form action="adduser.asp" method="post">
<input type="text" name="username"> : username <font color="red">*</font><br>
<input type="password" name="password1"> : password<font color="red">*</font><br>
<input type="password" name="password2"> : repeat<font color="red">*</font><br>
<input type="text" name="homepage">: homepage<br>
<input type="text" name="email">: email <font color="red">*</font><br>
<input type="text" name="realname">: real name <font color="red">*</font><br><br>
<input type="submit" value="Sign uP"><br>
<a href="index.asp"><font color="000000">Back to homepage?</font></a>
</form>
</td></tr>
</table>
<table>
<tr><td class="small">
<h3>Login her hvis du allerede er medlem</h3>
</td></tr>
<tr><td class="small">
<form action="loginpro.asp?login=true" method="post">
<input type="text" name="username"> : username <font color="red">*</font><br>
<input type="password" name="password"> : password<font color="red">*</font>
<br><br>
<input type="submit" value="Login"><br>
<a href="index.asp"><font color="000000">Back to homepage?</font></a>
</form>
</td></tr>
</table>
<table>
<tr><td class="small">
</body>
</html>

Min loginpro.asp ser sådan ud:
<%
Dim adocon,rstest,sqltest,clear
clear=0

if request.querystring("login")="true" then

if request.form("username")="" then
response.write("<b>Username field is empty</b><br><b>Pls correct the problem</b><br>")
response.write("<a href=""java script:history.go(-1)""><font color=""000000"">Click here to go back</font></a>")
elseif request.form("password")="" then
response.write("<b>Password field is empty</b><br><b>Pls correct the problem</b><br>")
response.write("<a href=""java script:history.go(-1)""><font color=""000000"">Click here to go back</font></a>")
else

Set adoCon = Server.CreateObject("ADODB.Connection")
adoCon.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../fpdb/userlist.mdb")
set rstest = Server.CreateObject("ADODB.Recordset")
sqltest="Select * from users where username='" & request.form("username") & "' and parked=false"
rstest.open sqltest,adocon,2,3
if  not  rstest.eof then
    if request.form("password")=rstest("pass") then
    session("login")="true"      ' main validation session object
    session("username")=rstest("username")  ' use to pass the username info on every page
    session("lastlogin")=rstest("lastlogin")      ' use to pass the last login date of the user anywhere
    session("logctr")=rstest("logctr")        ' use to pass the login counter of the user on every pages
    session("level")=rstest("level") ' pass the level information on every page
if request.form("username")="admin" then
    session("admin")="true"

    end if
rstest("logctr")=rstest("logctr")+1
rstest("lastlogin")=now()
rstest("ipadd")=request.servervariables("remote_addr")
rstest.update
    clear =1

rstest.close
set rstest=nothing
adocon.close
set adocon=nothing
else
response.write("<b>Invalid Password!</b><br><b>Pls correct the problem</b><br>")
response.write("<a href=""java script:history.go(-1)""><font color=""000000"">Click here to go back </font></a>")
end if
else
response.write("There is no such username on this website.Or Admin parked your account for some reason!<br>Pls correct the problem or contact Admin.<br>")
response.write("<a href=""java script:history.go(-1)"">Click here to go back</a>")
end if
end if
end if
if session("admin")="true" then
response.redirect("admin.asp")
end if
if clear=1 then
%>
Log in successful!<br>
<a href="anyprotectedpage.asp">Click here to proceed</a>
<%
end if
%>
Avatar billede l_otto Nybegynder
05. december 2003 - 10:58 #15
ja det ved jeg sgu ikke..:-) sorry kan ikke gennemskue det
Avatar billede reimer7 Nybegynder
19. december 2003 - 19:35 #16
Lukker spørgsmål
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