Avatar billede runskee Nybegynder
09. september 2003 - 09:39 Der 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>"
                                                 
 
Else
    'Vis siden
    Response.Write "<td valign=top width=800>" & "<" & "<b>" & rsjob("Overskrift") & "<font size='1'>" &_
                  ">"&"</b>" &" - oprettet " & rsjob("Dato") &"<br><br>"&"</font>"  &_
                  Replace(rsjob("Tekst"), vbCrLf, "<br>") &_
                 
                    "<br><br><br>" & "kontakt: " & rsjob("Tlf") & "/" & rsjob("mobtlf") & "/" & "<a href='" & Request.ServerVariables("SCRIPT_NAME") & "?Bruger=" & rsjob("email") & "' class='two'>" & rsjob("email") & "</a></td></tr>"
End If

%>


Er det til at forstå??
Avatar billede cdc Novice
09. september 2003 - 10:42 #1
Prøv denne, er på svensk, men til at forstå: http://www.gruvsjo.com/main.asp?cat=script&ucat=asp&viewID=46
Avatar billede runskee Nybegynder
09. september 2003 - 14:24 #2
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")


If Request("mode") = "Check" then

        strUsername = Trim(Replace(request("username"),"'","''" ))
        strPassword = Trim(Replace(request("password"),"'","''" ))

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
Avatar billede d4s Novice
09. september 2003 - 21:11 #3
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.
Avatar billede runskee Nybegynder
10. september 2003 - 08:09 #4
Ok, det lyder godt.

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
Avatar billede runskee Nybegynder
10. september 2003 - 08:51 #5
nej snarere

sql="SELECT * FROM job WHERE RettetAf = " & session("brugerid")

det virker!
Avatar billede runskee Nybegynder
10. september 2003 - 09:21 #6
Jeg skylder vist lidt points til d4
da det var din løsning som bar frugt..... dem får du når jeg lukket spørgsmålet ned :-)
Avatar billede runskee Nybegynder
10. september 2003 - 09:32 #7
sidste spørgsmål:

hvis jeg skal lave en velkomst på siden. Altså skrive "velkommen (brugerens navn)" udfra brugeren id. Hvordan gøres det så?

p.s. Jeg har på fornemmelsen at jeg bruger:

set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open(Server.Mappath("../db.mdb"))

lidt for meget. Sløver det ikke afvikling/databasen, når man sådan hele tiden åbner og lukker forbindelsen??
Avatar billede d4s Novice
10. september 2003 - 10:42 #8
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?

D4
Avatar billede runskee Nybegynder
07. januar 2004 - 21:38 #9
-
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