29. januar 2004 - 22:17Der er
15 kommentarer og 3 løsninger
Hent aktuelt brugernavn
Hej...
Jeg har en login funktion hvor en bruger logger ind i mit system som er lavet på asp filer og en access 2000 database, men når de så er logget ind, vil jeg gerne kunne trække nogle informationer om den aktuele bruger ud som brugernavnet og status hvordan gør man det ?
Her lidt pseudo-kode - hold det op med det, du gør idag for at verificere brugeren.
få fat i brugernavn og password (nok postet fra en anden side) lav en "select * from brugere where brugernavn = varbrugernavn" (pseudo) open recordset med ovennævnte sql if rs("password") = varpassword (Så er den ok) session("varbrugerdata1") = rs("brugerdata1") session("varbrugerdata2") = rs("brugerdata2") osv. end if
du kan nu bruge session-variablene med brugerdata på alle dine sider.
mr.meincke >> hvordan det? passwordet ligger jo ikke i en session, og man skal jo bruge passwordet for at logge ind. Den session han laver skal selvfølgelig havet er mærkeligt navn så man ikke lige gætter sig frem til den.
tekniskdesigner >> prøv at kig på http://nyside.fug.dk der er en artikkel om sessions
fun22, sådan som jeg forstod det, så ville du gemme brugernavnet til at "hente brugerens" informationer? Hvis det var sådan du mente, og ikke den session har et giga navn, så er den ret lidt at "cracke".
Kan du uddybe, hvad det er helt præcist, du ikke forstår i mit svar? Jeg går ud fra, at du godt kan finde ud af at checke om passwordet er rigtigt - ved hjælp af databasen? Du skriver i starten, at de logger ind - så du har vel checket i orden? Det er så dette database-kald, hvor du henter password (for at kunne sammenligne det fra basen, med det indtastede), der også skal hente de øvrige oplysniger på brugeren. Disse oplysninger kan du så gemme i session-variable, og dermed er de til rådighed på alle dine sider.
<% ' 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("db/db.mdb")
' Opbygning af SQL streng strSQL = "SELECT UserID 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") 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("memberssite.asp") 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 %>
<!--#include file="inc/toppage.asp"-->
<BR><BR><BR>
<H6 Class="advarsel"> Da vi stadig ligger i design fasen har man valgt at siden <BR> udelukkende vil være for speciele medlemmer indtil siden er færdig <BR> </H6>
' Opbygning af SQL streng strSQL = "SELECT UserID FROM Users"&_ " WHERE (Username = '" & strUID & "')"&_ " AND (Password = '" & strPWD & "')"
Her kan du jo foruden UserID selecte alle de felter, du ønsker.
' Opbygning af SQL streng strSQL = "SELECT UserID, Brugernavn FROM Users"&_ " WHERE (Username = '" & strUID & "')"&_ " AND (Password = '" & strPWD & "')"
Så er brugernavnet med også. (Kræver at du har dette felt i tabellen Users)
If Not (rs.BOF Or rs.EOF) Then ' Hvis brugeren fandtes i databasen intUID = rs("UserID") Else
Her sættes variablen intUID til at være userid fra databasen. Her kan du også sætte andre variable til at huske de felter, du har taget med i det ovenstående. If Not (rs.BOF Or rs.EOF) Then ' Hvis brugeren fandtes i databasen intUID = rs("UserID") Session("Brugernavn") = rs("Brugernavn") Else
Nu er der lavet en session-variabel, der indeholder brugernavnet. Denne kan du bruge på andre sider. F.x. udskrive den med: <% =Session("Brugernavn")%>
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.