Avatar billede musti776 Nybegynder
03. maj 2002 - 13:01 Der er 19 kommentarer og
1 løsning

Speciel login funktion

Jeg har brug for en login funktion, der skal gå ind i en Access database, i en "login" tabel, finde password som personen har tastet OG i en kolonne er der Targetwebsite (der har jeg skrevet stien til mappen hvor personen burd sendes til hvis password stemmer, alle personer sendes til deres Targetwebsite).

Mustafa
Avatar billede pelkjaer Nybegynder
03. maj 2002 - 13:11 #1
Okay.
Du laver en en tabel der fx. hedder "login" med to kolloner.
"user" og "pass". Så skriver du et brugernavn og et password i kollonerne.

Lav en side der hedder login.asp i UD.
Indsæt en form, to textfield (user og pass) samt en submit-button.

Lav et recordset for logintabellen.

Med databindings vinduet åbent siger du:
serverbehaviors-->user authentication-->log in user

Der vælger du din tabel, dit user og passfield, hvilken side der skal redirectes til ved login, og det samme ved forkert login.

Det burde være det.

------------------------------------

På de sider hvor du vil ha' login'en skal gælde, siger du blot:
serverbehaviors-->user authentication-->restrict acces to page og vælger username and password. Hvis de så prøver at gå en til en side udenom login bliver de redirectet til login.asp

Hvis du vil lave en logud funktion, vælger du en tekst/billede og siger:
serverbehaviors-->user authentication-->log out user.

Mvh. pelkjaer
Avatar billede pelkjaer Nybegynder
03. maj 2002 - 13:16 #2
Det skal så lige siges at den behavior har et sikkerhedshul.

Det løses sådan: (VB)

Find denne linje:
MM_rsUser.Source = MM_rsUser.Source & " FROM login_table WHERE username_field='" & MM_valUsername &"' AND password_field='" & CStr(Request.Form("password_textbox")) & "'"


Udskift den med denne:
MM_rsUser.Source = MM_rsUser.Source & " FROM login_table WHERE username_field='" & Replace(MM_valUsername,"'","''") &"' AND password_field='" & Replace(Request.Form("password_textbox"),"'","''") & "'"

Så er du sikkert kørende :)
Avatar billede musti776 Nybegynder
03. maj 2002 - 13:21 #3
det som du skriver, gælder jo for kun 1 person.

jeg har brug for noget der kan tjekke om password findes i databasen hvis den findes, så skal den tjekke stien i "Targetwebsite" kolonne og så sende brugeren til siden!

når jeg laver :serverbehaviors-->user authentication-->log in user
så kan jeg kun angive en side.

Mustafa
Avatar billede musti776 Nybegynder
03. maj 2002 - 13:22 #4
og husk der skal ikke være bruger navn....kun password
Avatar billede pelkjaer Nybegynder
03. maj 2002 - 13:23 #5
Du vil altså have at to forskellige personer redirectes til forskellige sider efter login?
Avatar billede musti776 Nybegynder
03. maj 2002 - 13:27 #6
alle dem som har en password i databasen, i øjeblikket er der 5, men det bliver meget flere, skal sendes til deres egne sider, som er indtastet i targetwebsite.
Avatar billede pelkjaer Nybegynder
03. maj 2002 - 13:50 #7
Hmm. Du laver en login tabel der indeholder UserID(autonummerering) og password (jeg ville nok også bruge et brugernavn).

Samtidig skal du også tilføje UserID til din data tabel.

Så laver du en session variable til login'en der matcher UserID, og skriver derefter UserID til data tabellen når brugeren indsætter en record.

Når du så vil vise en record filtreret fra UserID sessioen'en fra login tabellen.
Avatar billede pelkjaer Nybegynder
03. maj 2002 - 13:54 #8
Ups, sidste linje skulle have været:

Når du så vil vise en record, bruger du bare et select statement filtreret fra UserID sessioen'en fra login tabellen.

Og det var et svar.
Avatar billede pelkjaer Nybegynder
03. maj 2002 - 14:05 #9
Hvis det lød for avanceret har jeg fundet en tut der minder lidt om det jeg netop skrev.

http://www.udnewbie.com/AdvancedTutorials/Addssck/index.cfm
Avatar billede musti776 Nybegynder
03. maj 2002 - 14:08 #10
jeg ved ikke hvorfor, men jeg har svært ved at se , hvordan det du skriver skal sende en bruger til sin "Targetwebsite"!!

hvad hvis jeg skriver at jeg har en login tabel, inde i den er der :PersonID(autonum.) password og targetwebsite(sti- ../xx/xx/index.asp)

der er også fornavn, efternavn osv. osv. men de skal vel ikke bruges til noget.

kan du ikke ud fra de oplysninger fortælle hvordan brugeren sendes til sin targetwebsite?
Avatar billede pelkjaer Nybegynder
03. maj 2002 - 14:15 #11
Det er alt for besværligt med en desideret target website. Min metode bedre og giver samme resultat.

Kig på den tut der.
Avatar billede musti776 Nybegynder
03. maj 2002 - 14:34 #12
ok, er lige ved at acceptere, men lige en sidste ting...
hvor god er du til asp?

kan du lige kigge på denne kode engang, og måske lige rette de ting jeg ikke kunne se, da jeg synes koden er meget nemmere at have styr på....

du har de nødvendige info her hvis du lige vil rette

tabel:login
kolonner:PersonID, password, targetwebsite

<%
' Hvis der er blevet trykket på knappen "Login"
If Request.Form("Action") = "Login" Then
    ' Her forberedes de indtastede værdier til validering
    strUID = Trim(Replace(Request.Form("Brugernavn"),"'",""))
    strPWD = Trim(Replace(Request.Form("Adgangskode"),"'",""))

    ' Hvis der er skrevet noget i både brugernavn og adgangskode
    If Len(strUID) > 0 And Len(strPWD) > 0 Then

        ' DSNLess forbindelse til databasen
        Set myConn = Server.CreateObject("ADODB.Connection")
        myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("protect.mdb")

        ' Opbygning af SQL streng
        strSQL = "SELECT * FROM Users"&_
            " WHERE (Username = '" & strUID & "')"&_
            " AND (Password = '" & strPWD & "')"

        Set rs = myConn.Execute(strSQL)
        If Not (rs.BOF Or rs.EOF) Then
            ' Hvis brugeren fandtes i databasen
            intUID = rs("UserID")
            intTRAN = rs("Transfer")
           
           
        Else
            ' Hvis brugeren ikke fandtes i databasen
            strERR = "Du blev ikke godkendt af systemet"
        End If

        ' Rydder op i vores connection objekt
        myConn.Close
        Set myConn = Nothing

        If Len(intUID) Then
            ' Hvis variablen intUID indeholder en værdi sættes denne i sessionen "UserID" og brugeren bliver sendt videre
            Session("UserID") = intUID
            Response.Redirect intTRAN
        End If
    Else
        ' Hvis der ikke var angivet brugernavn og adgangskode
        strErr = "Du skal skrive både brugernavn og adgangskode"
    End If

    If Len(strErr) > 0 Then
        ' Her laves fejlmeddelsen om til rød skrift
        strErr = "<p><font color=red>" & strErr & "</font></p>"
    End If
End If
%>
<html><head>
<title>Login script</title>
</head>

<body>
<form method="POST" action="login.asp">
  <p><font size="4">Angiv brugernavn og adgangskode</font></p><%=strErr%>
  <table border="0">
    <tr>
      <td width="50%">Brugernavn:</td>
      <td width="50%"><input type="text" name="Brugernavn" size="20"> (test)</td>
    </tr>
    <tr>
      <td width="50%">Adgangskode:</td>
      <td width="50%"><input type="password" name="Adgangskode" size="20">
        (test)</td>
    </tr>
  </table>
  <p><input type="submit" value="Login" name="Action"></p>
</form>
url
</body></html>
Avatar billede musti776 Nybegynder
03. maj 2002 - 14:38 #13
ups..har sendt den forkerte

sender den rigtige nu hvor jeg har lavet ændringer...

<%
' Hvis der er blevet trykket på knappen "Login"
If Request.Form("Action") = "Login" Then
    ' Her forberedes de indtastede værdier til validering
    strPWD = Trim(Replace(Request.Form("Adgangskode"),"'",""))

    ' Hvis der er skrevet noget i både brugernavn og adgangskode
    If  Len(strPWD) > 0 Then

        ' DSNLess forbindelse til databasen
        Set myConn = Server.CreateObject("ADODB.Connection")
        myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("serviceaftale/serviceaftale.mdb")

        ' Opbygning af SQL streng
        strSQL = "SELECT * FROM login"&_
            " WHERE (Pasord = '" & strPWD & "')"
           

        Set rs = myConn.Execute(strSQL)
        If Not (rs.BOF Or rs.EOF) Then
            ' Hvis brugeren fandtes i databasen
            intUID = rs("PersonID")
            intTRAN = rs("Targetwebsite")
           
           
        Else
            ' Hvis brugeren ikke fandtes i databasen
            strERR = "Du blev ikke godkendt af systemet"
        End If

        ' Rydder op i vores connection objekt
        myConn.Close
        Set myConn = Nothing

        If Len(intUID) Then
            ' Hvis variablen intUID indeholder en værdi sættes denne i sessionen "UserID" og brugeren bliver sendt videre
            Session("PersonID") = intUID
            Response.Redirect intTRAN
        End If
    Else
        ' Hvis der ikke var angivet  adgangskode
        strErr = "Du skal skrive adgangskode"
    End If

    If Len(strErr) > 0 Then
        ' Her laves fejlmeddelsen om til rød skrift
        strErr = "<p><font color=red>" & strErr & "</font></p>"
    End If
End If
%>
<html><head>
<title>Login script</title>
</head>

<body>
<form method="POST" action="login.asp">
  <p><font size="4">Angiv brugernavn og adgangskode</font></p><%=strErr%>
  <table border="0">
   
    <tr>
      <td width="50%">Adgangskode:</td>
      <td width="50%"><input type="password" name="Adgangskode" size="20">
        (test)</td>
    </tr>
  </table>
  <p><input type="submit" value="Login" name="Action"></p>
</form>
url
</body></html>
Avatar billede pelkjaer Nybegynder
03. maj 2002 - 14:47 #14
Jeg har ikke tid lige nu da jeg er ved at afslutte en opgave.
Men flygtigt ser det fint ud.
Avatar billede musti776 Nybegynder
03. maj 2002 - 14:54 #15
hvis du lige kigger på den når nu har tid, vil det være fint da den ikke virker....
Avatar billede avlund Nybegynder
03. maj 2002 - 19:18 #16
Hvori ligger fejlen i den kode da?

Har ikke kigget den igennem nu, men det bliver nemmere at fejlfinde hvis man ved hvad der går galt...
Avatar billede musti776 Nybegynder
03. maj 2002 - 20:18 #17
jeg har hentet denne script, men den havde sin egen database , jeg har prøvet at ændre de nødvendige koder i den så den kunne bruge min database, men hver gang jeg prøver at logge ind, så er det som om den opdatere siden og ikke andet.

den har ikke forbindelse med databasen, jeg har skrevet de nødvendige info om min database længere op, hvis du lige tjekker den engang.

login siden og databasen ligger i samme mappe i wwwroot mappen.
Avatar billede musti776 Nybegynder
03. maj 2002 - 20:22 #18
jeg ved ikke lige hvornår i kigger på den men, jeg tror nok jeg først skriver igen på søndag....
Avatar billede pelkjaer Nybegynder
05. maj 2002 - 09:16 #19
Hvis du siger at din database ligger i samme mappe som siderne skal der vel ikke stå

' DSNLess forbindelse til databasen
        Set myConn = Server.CreateObject("ADODB.Connection")
        myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("serviceaftale/serviceaftale.mdb")

Men istedet

' DSNLess forbindelse til databasen
        Set myConn = Server.CreateObject("ADODB.Connection")
        myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("serviceaftale.mdb")
Avatar billede musti776 Nybegynder
06. maj 2002 - 10:09 #20
den virker bare ikke.....men jeg fandt en anden kode, som jeg har fået til at virke...

Tak for hjælpen.

Mustafa
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