09. september 2003 - 09:39Der er
8 kommentarer og 1 løsning
login funktion m. session eller cookie??
Jeg skal lave en login-funktion til en adminside for noget der ligner et jobforum. Man logger ind med brugernavn og password og udfra ID'et(der er et slags medlemsnr) i en bruger-tabel skal man så liste de jobs, som den pågældende person har oprettet.
Bruger ID'et skrives til job-tabellen(her hedder det mærkeligt nok: RettetAf), når der oprettes job. Så man kan se hvem som har oprettet jobbet.
Jobforum er lavet, men jeg kan ikke finde ud af KUN at liste jobs udfra det Bruger.ID som er logget på.
Her listes altså alle jobs fra job-tabellen(fra alle medlemmer/bruger.ID'er)
Det skal være muligt på alle sider at checke om vedkommende er logget på og hvem personen er. Så medlemmer ikke kommer ind på hinandens sider. Det kan vel gøres udfra Bruger.ID'et, som er unikt, der så sendes videre vha. session eller cookie (??)
<%
'Åben en forbindelse til databasen set conn=server.createobject("adodb.connection") conn.provider="microsoft.jet.oledb.4.0" conn.open Server.Mappath("..\db.mdb")
'Find alle overskrifter på alle siderne sql="select ID, Overskrift from job" set rsOverskrift=server.createobject("adodb.recordset") rsOverskrift.open sql, conn
'List alle overskrifterne som links Response.Write "<tr align='left'><td valign=top width='30%'>" do while not rsOverskrift.eof response.write "<a href='" & Request.ServerVariables("SCRIPT_NAME") & "?Overskrift=" & rsOverskrift("overskrift") & "' class='two'>" & rsOverskrift("overskrift") & "</a><br>" rsOverskrift.movenext
loop Response.Write "</td>"
'Indlæs overskrift fra querystring job=request.querystring("overskrift")
'Opbyg en SQL sætning, der henter info omkring siden og den bruger der sidst har rettet den sql="SELECT job.ID, job.Overskrift, job.Tekst, job.email, job.Tlf, job.mobtlf,job.Dato, Bruger.username " &_ "FROM Bruger INNER JOIN job ON Bruger.ID = job.RettetAf " &_ "where Overskrift='" & job & "'"
'Udfør SQL sætningen Set rsjob = Server.CreateObject("ADODB.Recordset") rsjob.Open SQL, Conn
'Kontroler at siden blev fundet If rsjob.EOF Then Response.Write "<td valign='top'>Velkommen til Jobforum</td></tr>"
Har haft følgende funktion selv. --------------------------------------------------------------------- <% Set RS = Server.CreateObject("ADODB.Connection") Set LO = Server.CreateObject("ADODB.RecordSet")
rs.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("../db.mdb")
Sql = "Select * from Bruger where (username = '" & strUsername & "') and ([password] ='" & strPassword & "')" Set LO = RS.Execute(Sql) if LO.EOF or LO.BOF then Session("login") = "" error = "Brugernavn eller kodeord er forkert!" else strDSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../db.mdb") Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open strDSN strSQL = "SELECT * FROM Bruger where (username = '" & Request("username") & "') and (password ='" & Request("password") & "')" Set ez = myConn.Execute(strSQL) Session("login") = "Authed" Response.Redirect "job.asp" EZ.Close RS.Close Conn.Close End if End if %> <br> <center> <form method="POST" action="plogin.asp"> <input type="hidden" name="mode" VALUE="Check"> -------------------------------------------------------
Men her checkes der jo bare på om man er logget ind eller ej. Dvs at man kan få adgang til andre personers sider også. Er den "svenske" login ikke ligedan?
Jeg skal have bruger.ID'en med på de næste sider efter login, så kan jeg hente oplysninger fra databasen(så som jobs)udfra denne ID.
p.s. bær over med at jeg ikke er den helt store asp-haj
Session("login") = "Authed" kan erstattes med session("brugerid")=LO("id") Derved indeholder din session("brugerid") brugerens id nummer i databasen. Du behøver derfor ikke session("login"), da du kan teste om brugeren er logget ind med:
if session("brugerid")<>"" then ' brugeren er logget ind ;O) end if
Hver session variabel fylder, så jo færre jo bedre.
så kan jeg bruge den session til at udskrive jobs fra den person med det bruger.id.
Hvordan gør man det? noget lignende det her?
'Åben en forbindelse til databasen set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open(Server.Mappath("../db.mdb"))
'Find jobs i databasen ud fra RettetAf set rs = Server.CreateObject("ADODB.recordset") sql="SELECT * FROM job WHERE RettetAf = brugerid" rs.Open sql, conn
Du kan definere en session("brugernavn") ligesom du definerer id nummeret som en session.
session("brugerid")=LO("id") session("brugernavn")=LO("username") (eller hvad dit felt nu hedder)
Så kan du når som helst udskrive navnet med: response.write "Velkommen " & session("brugernavn") & ".<br>"
Personligt åbner jeg min DB connection i starten af dokumentet og lukker den til sidst ved hjælp af to inklude filer. Til gengæld lukker jeg mine recordset (rs) så snart jeg er færdig med dem, for at undgå at belaste serverens hukommelse unødvendigt. Jeg har lykkeligt glemt alt om access, men mon ikke du kan gøre det samme?
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.