Avatar billede bongi Juniormester
13. oktober 2005 - 22:37 Der er 25 kommentarer og
1 løsning

redirect history -2

Hej Ex'er

Jeg har neogle sider der undersøger for login, og hvis de ikke er logget ind sendes de til logind siden, der ville jeg så gerne når de havde logget ind sende dem tilbage til den side de gerne ville se, men kan ikke få det til at virker med JS eller noget andet så jeg håber på hjælp her.

side 1 -> login_side -> log_ind_script ->retur til side 1
Avatar billede bjorn_jeppesen Nybegynder
13. oktober 2005 - 22:50 #1
Når du godkender et login kan du tildele en variable session("Godkendt") = 1
Denne session kan du tjekke for i toppen af de sider du ønsker at kaste uønskede brugere væk fra.
Sessions ligger på den server der afvikler sitet. Det kan være en fordel i global.asa at sætte levetiden til x antal minutter, alt efter hvor mange brugere du har på sitet.

e.g. i asp (VB):
<% if session("Godkendt") <> 1 then
  response.redirect "badlogin.asp" %>
Avatar billede bjorn_jeppesen Nybegynder
13. oktober 2005 - 22:51 #2
Sjub-dubub-------

end if

skal selvfølgelig med
Avatar billede no_doubt Nybegynder
13. oktober 2005 - 22:52 #3
bjørn kan du assistere mig lidt. Undskyld spammen
Avatar billede bjorn_jeppesen Nybegynder
13. oktober 2005 - 22:52 #4
Nå, den læste jeg vist ikke ordentlig.

Det side ID du vil have dem til at gå tilbage til, kan ligges i en session også.

Du kan iøvrigt også vælge coockies...........
Avatar billede bjorn_jeppesen Nybegynder
13. oktober 2005 - 22:53 #5
no_doubt: Assistere?
Avatar billede bongi Juniormester
13. oktober 2005 - 23:01 #6
Jeg har styr på det med selve login og kontrol af login.

Det jeg har brug for er at redirecte folk 3 sider tilbage, ligesom i i html med go.history(-3) eller hvordan det nu lige er,

Me´n det skal kunne bruges i en response eller på anden måde ske automatisk på en bestemt side.
Avatar billede bjorn_jeppesen Nybegynder
13. oktober 2005 - 23:07 #7
Du må forklare dig lidt nærmere. Det virker simpelt det du beskriver indledningsvis, men nu bliver jeg helt blank. Response hvad redirect write eller hvad. Og hvornår skal de 3 baglæns. Hvilken handling udfører de, eller mangler at udføre, som gør at de skal sendes baglæns?
Avatar billede no_doubt Nybegynder
13. oktober 2005 - 23:14 #8
ja i mine to spm omkring hvordan man bruger wap'ens variabler i asp kald til en access database, synes ikke det giver nogen mening overhovedet
Avatar billede bongi Juniormester
13. oktober 2005 - 23:16 #9
ok prøver lige:

du kommer til forsiden (som kan ses af alle)

du klikker på et link til en anden side "side 1"

denne side er kun for medlemmer og da siden tjekker for dette og du ikke er logget ind sendes du til log ind siden.

du udfylder på logind siden dit logind og password i en form som sendes til en ny side

denne side tjekker dine oplysninger i databasen og når det er gjort skal den sende dig tilbage til "side 1"

håber dette hjalp
Avatar billede softspot Forsker
14. oktober 2005 - 01:40 #10
Du skal bruge server.transfer i kombination med response.redirect. I pseudokode ser det således ud:

side1:
check om bruger er logget ind (f.eks. aflæst i en session-variabel)
hvis bruger ikke er logget ind, så
  server.transfer "loginside"
ellers
  vis siden
slut hvis
slut side


loginside:
check om det er et postback, dvs. brugeren har trykket loginknappen og sendt brugerinfo
hvis det er postback, så
  check imod databasen om brugeren kan autoriseres
  hvis bruger kan autoriseres så
    sæt session-variabel som angiver at bruger er autoriseret
    sæt fejlbesked til tom
  ellers
    sæt evt. en fejlbesked
  slut hvis
  response.redirect request.servervariables("SCRIPT_NAME") & "?" & fejlbesked
ellers
  vis loginformular med action sat til request.servervariables("SCRIPT_NAME")
slut hvis
slut side
Avatar billede softspot Forsker
14. oktober 2005 - 01:41 #11
Fejlbeskeden kan du bruge til at informere brugeren i loginformularen, hvis du synes det er nødvendigt (om ikke andet er det da en brugervenlig måde at håndtere brugeren :)).
Avatar billede bongi Juniormester
14. oktober 2005 - 07:07 #12
Ja det er der styr på, nu skal jeg bare have sendt brugeren tilbage til den side han kom fra, fra login siden....
Avatar billede bongi Juniormester
14. oktober 2005 - 07:13 #13
Noget i stil med dette (som ikke virker her)

<%
    Response.Write("<script language=""JavaScript"">" & vbCrLf & "")
    Response.Write("    {" & vbCrLf & "")
    Response.Write("        document.location='java script:history.back(1);';" & vbCrLf & "")
    Response.Write("    }" & vbCrLf & "")
    Response.Write("    </script>" & vbCrLf & "")
    %>
Avatar billede softspot Forsker
14. oktober 2005 - 08:16 #14
Du skal ikke bruge history.back du skal bruge den struktur som du laver på serveren til at få brugeren tilbage til den side han/hun oprindelig surfede ind på...
Avatar billede softspot Forsker
14. oktober 2005 - 08:19 #15
Prøv lige at nærstuder en sekvens jeg har skrevet og bemærk specielt hvor jeg benytter Server.Transfer (som altså er en faktisk kommando i ASP) og hvor jeg bruger Response.Redirect (som du nok allerede kender). Server.Transfer gør at din URL ikke bliver skiftet fra du beder om side1 til du logger ind og er tilbage på side1...
Avatar billede bongi Juniormester
14. oktober 2005 - 08:23 #16
Jeg er ked af det men jeg er stået helt af her...
Avatar billede softspot Forsker
14. oktober 2005 - 08:36 #17
Ja, jeg kunne at vi ikke var på samme side... :)

Når din bruger logger ind, gemmer du vel information om at han er logget på i en session-variabel...? Jeg tillader mig at antage dette og at den session-variabel hedder "godkendt".

På de sider som skal være beskyttet af login sætte du i toppen denne kode (f.eks. side1.asp):

<%
if isempty(session("godkendt")) then
  Server.Transfer "login.asp"
end if
%>
<html>
.
<!-- indholdet af den side som er beskyttet -->
.
</html>


På din loginside (som jeg lige har lavet en demoversion af her) har du flg. kode:

<%
if Request.Form("login") <> "" then
  ' åben database
  ' check om brugernavn og adgangskode passer sammen
  ' læg denne information i variables hasAccess

  if hasAccess then
    session("godkendt") = true
  end if

  ' Smid brugeren omkring samme side igen
  ' Hvis brugerens login var korrekt vil siden nu blive vist
  ' ellers ender han bare på loginsiden igen...
  Response.Redirect Request.ServerVariables("SCRIPT_NAME")
end if
%>
<html>
<head>
  <title>Login</title>
</head>
<body>
  <form action="<%=Request.ServerVariables("SCRIPT_NAME")%>" method="POST">
    Brugernavn: <input type="text" name="username"><br>
    Adgangskode: <input type="password" name="password"><br>
    <input type="submit" name="login" value="Log på"><br>
  </form>
</body>
</html>
Avatar billede bongi Juniormester
14. oktober 2005 - 08:42 #18
Ok her kommer min kode :::

På de beskyttede sider er der følgende:
<%
    If Session("login") <> "JA" Then
        Response.Redirect "../medlem.asp"
    End if
%>



Loginsiden ser således ud:
<form action="medlemmer/log_ind.asp">
<table cellspacing="1" cellpadding="1" border="0">
<tr>
    <td><font face="Verdana" size="2" color="#000080">Nummer:</td>
    <td><input type="text" name="medlemsnummer" size="10"></td>
</tr>
<tr>
    <td><font face="Verdana" size="2" color="#000080">Password:</td>
    <td><input type="password" name="password" size="10"></td>
</tr>
<tr>
    <td colspan="2" align="center" valign="bottom" height="30"><input type="submit" class="submit" Value="&nbsp;&nbsp;Log ind&nbsp;&nbsp;"></td>
</tr>
</form>
SOm jo sender folk til log_ind.asp



Den se således ud:

<%

dbConn = "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../../db/medlemmer.mdb")
If isnumeric(request("medlemsnummer")) = false Then
  response.redirect "../medlem.asp?logind=false"
End If

response.buffer=true 
Query = "Select * from medlemmer where id =" & request("medlemsnummer")
Set strConn = Server.CreateObject("ADODB.Connection")
strConn.Open dbConn
Set rs = strConn.Execute(Query)

If rs.EOF then
response.redirect "../medlem.asp?logind=false"
End if

Do While Not rs.EOF

If not request("password") = rs("password") then
response.redirect "../medlem.asp?logind=false"
else

  Session("login") = "JA"
  Session.Timeout = 60
  Session("user") = rs("id")
  Session("fornavn") = rs("fornavn")
  Session("efternavn") = rs("efternavn")
  Session("email") = rs("email")
  Session("navn") = rs("fornavn") & "&nbsp;" & rs("efternavn")

  Response.redirect "331.asp"

 
End if

rs.MoveNext
Loop

rs.Close
Set rs = Nothing
%>
Avatar billede softspot Forsker
14. oktober 2005 - 09:29 #19
Ja, se er det jo bare at passe det ind i det kode jeg lige har vist dig (din login-knap skal have et navn for at det fungerer ordentligt, jeg har kaldt den login):

../medlem.asp:
--------------------

<%
response.buffer=true 

if Request.Form("login") <> "" then
  ' åben database
  ' check om brugernavn og adgangskode passer sammen
  ' læg denne information i variables hasAccess
  dbConn = "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};" & _
      "DBQ=" & Server.MapPath("../../db/medlemmer.mdb")

  strQuery = "SELECT * " & _
        "FROM medlemmer " & _
        "WHERE id =" & request.form("medlemsnummer") & _
        " AND password = '" & request.form("password") & "'"
  Set objConn = Server.CreateObject("ADODB.Connection")
  objConn.Open dbConn
  Set rs = objConn.Execute(strQuery)

  If not rs.EOF then
    Session.Timeout = 60
    Session("login") = "JA"
    Session("user") = rs("id")
    Session("fornavn") = rs("fornavn")
    Session("efternavn") = rs("efternavn")
    Session("email") = rs("email")
    Session("navn") = rs("fornavn") & "&nbsp;" & rs("efternavn")
  End if

  rs.Close
  Set rs = Nothing
  objConn.Close
  set objConn = nothing

  ' Smid brugeren omkring samme side igen
  ' Hvis brugerens login var korrekt vil siden nu blive vist
  ' ellers ender han bare på loginsiden igen...
  Response.Redirect Request.ServerVariables("SCRIPT_NAME")
end if
%>
<html>
<head>
  <title>Login</title>
</head>
<body>
  <form action="<%=Request.ServerVariables("SCRIPT_NAME")%>" method="POST">
    <table cellspacing="1" cellpadding="1" border="0">
      <tr>
        <td><font face="Verdana" size="2" color="#000080">Nummer:</td>
        <td><input type="text" name="medlemsnummer" size="10"></td>
      </tr>
      <tr>
        <td><font face="Verdana" size="2" color="#000080">Password:</td>
        <td><input type="password" name="password" size="10"></td>
      </tr>
      <tr>
        <td colspan="2" align="center" valign="bottom" height="30">
          <input type="submit" class="submit" name="login" value="&nbsp;&nbsp;Log ind&nbsp;&nbsp;"></td>
      </tr>
    </table>
  </form>
</body>
</html>


beskyttede sider ser således ud i toppen:

<%
if session("login") <> "JA" then
  Server.Transfer "../medlem.asp"
end if
%>
Avatar billede no_doubt Nybegynder
14. oktober 2005 - 10:15 #20
er der ikke en af jer asp'ere der kan støtte lidt på mine spm om wap.. ?
Avatar billede bongi Juniormester
14. oktober 2005 - 11:49 #21
Ok men nu har du samlet det på 2 sider eller ?

har lige prøvet det men det virker ikke,

Prøver igen i nat for nu er der flere brugere på.
Avatar billede softspot Forsker
14. oktober 2005 - 12:17 #22
Ja, jeg har samlet selve opslaget og loginformularen i en fil, fordi jeg synes de hører sammen, men det er ikke noget krav. Hvis du vil splitte dem op, skal du bare være opmærksom på hvordan du kalder dem.

Har du husket at ændre koden på de beskyttede sider? - den er jo en smule anderledes end din egen...
Avatar billede bongi Juniormester
17. oktober 2005 - 10:45 #23
Jeg har selv lavet det, på en lidt anden, mere simpel måde:

I filen der er "beskyttet" står følgende:
<%
Var_side = Request.ServerVariables("url")

    If Session("login") <> "JA" Then
        Response.Redirect "../medlem.asp?side=" & Var_side
    End if
%>

Der hvor de udfylder log ind informationerne står:
<input type="hidden" name="side" value="<%= request("side") %>">



og på logind siden står følgende til sidst:

If request("side") > "" then
Response.redirect ".." & request("side")
ELse
Response.redirect "331.asp"
End if


og det virker perfekt her for mig.


Men soft spot får point for dit seriøse arbejde med at løse det.,.. tak for hjælpen.
Avatar billede bongi Juniormester
17. oktober 2005 - 10:46 #24
Hvis du lige smider et svar altså :-)
Avatar billede softspot Forsker
17. oktober 2005 - 11:58 #25
Det skal jeg nok. Velbekomme :)
Avatar billede softspot Forsker
17. oktober 2005 - 16:27 #26
Tak for point... :)
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