Avatar billede 1005 Nybegynder
25. april 2004 - 10:03 Der er 18 kommentarer og
1 løsning

redirect til to sider fra en formular

jeg fandt nedenstående login funktion og satte den ind på en hjemmeside og det vorker med små rettelser.
jeg har et sp.: jeg skriver password i textfeltet og bliver sendt til en side kun for brugere - fint nok men kan jeg i det samme felt have yderligere et pasword som for andre brugere sender dem til en anden side. altså kan jeg benytte det samme tekstfelt  til 2,3 eller flere pasword med forskellige redirect?



<%
SET RS = Server.CreateObject("ADODB.Connection")
rs.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../databaser/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"))
       

  Sql = "Select Count(*) as Found from user where (username = '" & strUsername  & "') "
  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("../databaser/database.mdb")
  Set myConn = Server.CreateObject("ADODB.Connection")
  myConn.Open strDSN
  strSQL = "SELECT * FROM user where (username = '" & Request("username") & "') "
  Set ez = myConn.Execute(strSQL)
    Session("login") = "yes mate"
    Response.Redirect "aaah.htm"
    EZ.Close
    RS.Close
    Conn.Close
  end if
end if
%>
<style type="text/css">
<!--
.style1 {
    font-family: Arial, Helvetica, sans-serif;
    font-style: italic;
    font-size: 10px;
}
.style2 {
    font-size: 12px;
    font-weight: bold;
    font-family: Verdana, Arial, Helvetica, sans-serif;
}
-->
</style>

<br><form method="POST" action="../login.asp">
<input type="hidden" name="mode" VALUE="Check">
<span class="style1">Arkiv:kræver login:</span><br>
<br>

<span class="style2">Username:</span>
<input class='text' type='text' name='username' size='15' style='font-family: Verdana; font-size: 8 pt' value="<%=strbrugernavn%>"></font>
<br>
<br>
<input class="text" type="submit" value="Login" name="submit" style="font-family: Verdana; font-size: 8 pt"></font>

</form>
Avatar billede trumf Nybegynder
25. april 2004 - 10:45 #1
Hvis du på hver bruger har en brugerstatus, så kan du sende brugeren til en bestemt side, alt efter hvilken status brugeren har.
Select Case ez("brugerstatus")
  Case 1
    videre = "aaah.htm"
  Case 2
    videre = "ohhh.htm"
  Case Else
    videre = "iiih.htm"
End Select
...
  else
  strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../databaser/database.mdb")
  Set myConn = Server.CreateObject("ADODB.Connection")
  myConn.Open strDSN
  strSQL = "SELECT * FROM user where (username = '" & Request("username") & "') "
  Set ez = myConn.Execute(strSQL)
    Session("login") = "yes mate"
    Response.Redirect videre
    EZ.Close
    RS.Close
    Conn.Close
  end if
...
Avatar billede trumf Nybegynder
25. april 2004 - 10:47 #2
Hvis du på hver bruger har en brugerstatus, så kan du sende brugeren til en bestemt side, alt efter hvilken status brugeren har.

...
  else
  strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../databaser/database.mdb")
  Set myConn = Server.CreateObject("ADODB.Connection")
  myConn.Open strDSN
  strSQL = "SELECT * FROM user where (username = '" & Request("username") & "') "
  Set ez = myConn.Execute(strSQL)
Select Case ez("brugerstatus")
  Case 1
    videre = "aaah.htm"
  Case 2
    videre = "ohhh.htm"
  Case Else
    videre = "iiih.htm"
End Select
    EZ.Close
    RS.Close
    Conn.Close
    Session("login") = "yes mate"
    Response.Redirect videre
  end if
...
Avatar billede 1005 Nybegynder
25. april 2004 - 10:59 #3
en bruger status hvad er det - og ideen er at skrives der eksempelvis abc i textfeltet kommer man til en side eller skriver man cba kommer man til en anden etc. disse password abc/cba riderecter brugeren til forskellige sider - det ligge måske også i dit svar - men du kan evt uddybe
Avatar billede trumf Nybegynder
25. april 2004 - 11:12 #4
Der er jo ikke meget sikkerhed i et password, hvis flere brugere har det samme, derfor har jeg sat et felt mere på, som f.eks. kunne hedde brugerstatus, men du kan sagtens gøre med et password.
Select Case ez("brugerpassword")
  Case "abc"
    videre = "aaah.htm"
  Case "cba"
    videre = "ohhh.htm"
  Case Else
    videre = "iiih.htm"
End Select
Avatar billede trumf Nybegynder
25. april 2004 - 11:15 #5
For at gøre det mere forståeligt med else delen...
Case else
  videre = "ingenAdgang.htm"
Avatar billede 1005 Nybegynder
25. april 2004 - 11:47 #6
disse nye case ex abc7cba eller hvad det nu måtte være - skal de tilføjes under password i min database?
Avatar billede trumf Nybegynder
25. april 2004 - 11:50 #7
Ja, det skal ligge i databasen, så må du selv bestemme om det skal være passwordet eller et nyt felt du opretter, der skal bestemme hvilken side brugheren skal vi´dere til
Avatar billede 1005 Nybegynder
25. april 2004 - 12:08 #8
jeg er ikke en haj - men kan til nød sætte enkle funktioner op i asp, men dette er åbenbart mere kompliceret for mig!

jeg kan ikke helt få det til at funke. 1. - min database hedder database, min tabel hedder user her i er der id og username: skal navne ændres her hvis det skel funke. iforhold til dit forslag?2.- dit ("brugerpassword") skal det ændres til ovenstående.?

er nedenstående dit foreslag?
<%
SET RS = Server.CreateObject("ADODB.Connection")
rs.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../databaser/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"))
       

  Sql = "Select Count(*) as Found from user where (username = '" & strUsername  & "') "
  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("../databaser/database.mdb")
  Set myConn = Server.CreateObject("ADODB.Connection")
  myConn.Open strDSN
  strSQL = "SELECT * FROM user where (username = '" & Request("username") & "') "
  Set ez = myConn.Execute(strSQL)
Select Case ez("brugerpassword")
  Case "abc"
    videre = "aaah.htm"
  Case "cba"
    videre = "ohhh.htm"
  Case Else
    videre = "iiih.htm"
End Select
    EZ.Close
    RS.Close
    Conn.Close
    Session("login") = "yes mate"
    Response.Redirect videre
  end if
%>
Avatar billede 1005 Nybegynder
25. april 2004 - 12:15 #9
og det der "yes mate" hvad er det for en funktion
Avatar billede trumf Nybegynder
25. april 2004 - 12:24 #10
Du har kun et brugernavn i databasen lige nu. Der er altså ikke noget password.
Vil du have et passwordcheck ? eller skal brugeren bare ledes videre alt efter brugernavn ?

yes mate er bare en sessionsvariabel der bliver sat på brugeren, så systemet kan se om brugeren er logget ind. Den kan du bruge til, at se på de enkelte sider, hvor der elleres ikke er adgang til, om man er logget ind.
Set denne kode i starten af de sider der er "sikre"
If Session("login") <> "yes mate" Then
  response.redirect("ingenAdgang.htm")
End If
Avatar billede 1005 Nybegynder
25. april 2004 - 12:35 #11
jeg har en række billeder i forskellige arkiver/filer,
jeg tænker på bare at have én login - altså et textfelt, her kan brugeren skrive sit pasword/username for at blive directed til den side brugeren har fået adgang til.
Et pasword/username skal derfor så skrives i databasen for hver side/arkiv der skal kunne åbnes?
Avatar billede trumf Nybegynder
25. april 2004 - 12:47 #12
Så gør sådan
<%
SET RS = Server.CreateObject("ADODB.Connection")
rs.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../databaser/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"))
       

  Sql = "Select Count(*) as Found from user where (username = '" & strUsername  & "') "
  Set LO = RS.Execute(Sql)
  if LO("Found") = 0 then
    Session("login") = ""
    error = "Du blev ikke godkendt af systemet"
  else
Select Case strUsername
  Case "abc"
    videre = "aaah.htm"
  Case "cba"
    videre = "ohhh.htm"
  Case Else
    videre = "iiih.htm"
End Select
    Session("login") = "OK"
    Response.Redirect videre
  end if
end if
RS.Close
Conn.Close
%>
og sæt dette ind i starten af de sikre sider
If Session("login") <> "OK" Then
  response.redirect("ingenAdgang.htm")
End If
Der skal så IKKE være links på den enkelte sikre side til de andre af de sikre, for så vil brugeren kunne se dem også.

Denne løsning er ikke så sikker, men holder nok til det du skal bruge. Når du har fået det til at virke og du forstår koden bedre, kan du lave det mere sikkert.
Avatar billede 1005 Nybegynder
25. april 2004 - 13:19 #13
jeg får denne medd. Microsoft VBScript runtime error '800a01a8'

Object required: 'Conn'

/z.asp, line 231
Avatar billede trumf Nybegynder
25. april 2004 - 13:22 #14
Så fjern Conn.Close i linie 231
Avatar billede 1005 Nybegynder
25. april 2004 - 14:29 #15
det virker tusinde tak - hvad var det jeg skulle fjerne?
og jeg måtte nede i min form fjerne i action "../aaah.asp" - skal der stå noget i denne action?
Avatar billede trumf Nybegynder
25. april 2004 - 16:06 #16
ja, der skal stå siden navn z.asp havde du vist kaldt den.
Avatar billede trumf Nybegynder
25. april 2004 - 16:06 #17
tak for point :-)
Avatar billede 1005 Nybegynder
25. april 2004 - 16:10 #18
men nu står der ingen ting og det virker
Avatar billede trumf Nybegynder
25. april 2004 - 16:16 #19
Jamen så er det vel fint...
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