Avatar billede duno Nybegynder
11. maj 2003 - 23:58 Der er 19 kommentarer og
1 løsning

Jeg skal bruge en session tror jeg

mit spørgsmål går ud på følgende.. jeg har lavet en dagbog som skal kunne bruge af alle mine brugere, den skal gemme hvem der har skrevet hvad ved hjælp af brugerens personid, som er skabt ud fra hvornår personen oprettede sig.

Mine brugere kan nu logge ind med deres egene brugernavne og passwords, men når jeg gemmer dataen bliver den stadig gemt, i en stor pærevælling!

når brugeren logger ind henter jeg alle data fra den kollone som har det indskrevne brugernavn og password i sig, disse informationer ligger i en tabel, og så vil jeg gerne gemme alle indlæg i en anden tabel

Tabellerne hedder som følger:

PersonTabel : indenholder brugernavn, password og PersonID

dagbogsindlaeg : indenholder alle dagbogsinlæg og kan hentes ved hjælp af PersonID

Min kode ser ud som følgende:

Man trykker på login og kommer til følgende side:



<%@LANGUAGE="VBSCRIPT"%>

<%
id = Request.QueryString("id")
funktion = Request.QueryString("funktion")

If Session("validering") = "valid" then
    If funktion = "opret" then
        Response.Redirect("opret.asp?id=" & id)
    ElseIf funktion = "opdater" then
        Response.Redirect("opdater.asp?id=" & id)
    Else
        Response.Redirect("slet.asp?id=" & id)
    End If
End If

If Request.QueryString("Submit") <> "" Then

Email = Trim(Replace(Request.QueryString("Email"),"'","''" ))
Password = Trim(Replace(Request.QueryString ("Password"),"'","''" ))
%>
<!--#include file="forbindelse.asp" -->
<%

Set autoriseret = Server.CreateObject ("ADODB.Recordset")
autoriseret.Open "SELECT * FROM PersonTabel WHERE Email = '" & Email & "' AND Password = '" & Password & "'", database

If Not autoriseret.EOF then
    Session("validering") = "valid"
    If funktion = "opret" then
        Response.Redirect("opret.asp?id=" & id)
    ElseIf funktion = "opdater" then
        Response.Redirect("opdater.asp?id=" & id)
    Else
        Response.Redirect("slet.asp?id=" & id)
    End If
End If

End If
%>

<html>
<head>
<title>Validering</title>
</head>

<body bgcolor="#FFFFFF" text="#000000">
<form name="form1" method="get" action="">
  <p> Email:
    <input type="text" name="Email">
  </p>
  <p>Password:
    <input type="Password" name="Password">
  <input type="submit" name="Submit" value="Login">
  </p>
  <input type="hidden" name="funktion" value="<% = funktion%>">
  <input type="hidden" name="id" value="<% = id%>">
</form>
</body>
</html>


Når man indskriver de rigtige informationer kommer man til :

<%@LANGUAGE="VBSCRIPT"%>

<%
If Session("validering") <> "valid" Then Response.Redirect("dagbog.asp")

If Request.QueryString("Submit") <> "" Then

set JMail = Server.CreateObject("JMail.Speedmailer")

Set database = Server.CreateObject("ADODB.Connection")
database.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\inetpub\db\dagbog.mdb")

Set indlaeg = Server.CreateObject("ADODB.Recordset")
indlaeg.Open "dagbogsindlaeg", database, 2, 2

indlaeg.AddNew
    indlaeg("overskrift") = Request.QueryString("overskrift")
    indlaeg("dato") = Request.QueryString("dato")
    indlaeg("indlaeg") = Request.QueryString("indlaeg")
    If Request.QueryString("link") <> "" then
        indlaeg("link") = Request.QueryString("link")
    End If
indlaeg.Update

Set emailadr = Server.CreateObject("ADODB.Recordset")
emailadr.Open "SELECT * FROM mailingliste", database

While NOT emailadr.EOF

JMail.SendMail "afsender@mail.dk", emailadr.Fields("email"), "Så er det nyt i dagbogen!", "Hej, smut lige forbi www.mitwebsted.dk/dagbog.asp, og se det nye indlæg", "mail.tele.dk"

emailadr.MoveNext

Wend

Response.Redirect("dagbog.asp")

End If
%>

<html><title>Opret</title>
<body bgcolor="#FFFFFF">
<form name="form1" method="get" action="opret.asp">
  Overskrift:
  <input type="text" name="overskrift">
  <br>
  Dato:
  <input type="text" name="dato">
  (22-03-2002)<br>
  Indlæg.:
  <textarea name="indlaeg" rows="8"></textarea>
  <br>
  Link:
  <input type="text" name="link">
  (www.cnn.dk)<br>
  <br>
  <input type="submit" name="Submit" value="Opret">
</form>

</body>
</html>


Jeg vil så gerne have at den indskriver PersonID samtidig med at den laver indlaeg.AddNew funktionen

Jeg håber på hjælp.. da jeg er LOST!!!

Takker
Avatar billede eagleeye Praktikant
12. maj 2003 - 00:03 #1
Det leteste er når du gemmer at man er logget ind i med sessionen:

  Session("validering") = "valid"


At gemme personID i session, så du både har valid og personID:

  Session("validering") = "valid"
  Session("personID") = autoriseret("personID")



Når du gemmer dagbogen så tilføj så den hender id fra Session:

  indlaeg("personID") = Session("personID")
Avatar billede duno Nybegynder
12. maj 2003 - 00:34 #2
jeg er en kegle på det her tidspunkt...

så skal der stå :

If Session("validering") = "valid" then
  Session("PersonID") = autoriseret("PersonID")

ik??
Avatar billede duno Nybegynder
12. maj 2003 - 00:34 #3
eller skal then fjernes???
Avatar billede eagleeye Praktikant
12. maj 2003 - 00:36 #4
Nej det skal være på den side som logger en ind og tjekker brugernavn og password..Så ret dette kode:


Set autoriseret = Server.CreateObject ("ADODB.Recordset")
autoriseret.Open "SELECT * FROM PersonTabel WHERE Email = '" & Email & "' AND Password = '" & Password & "'", database

If Not autoriseret.EOF then
    Session("validering") = "valid"
    If funktion = "opret" then
        Response.Redirect("opret.asp?id=" & id)
    ElseIf funktion = "opdater" then
        Response.Redirect("opdater.asp?id=" & id)
    Else
        Response.Redirect("slet.asp?id=" & id)
    End If
End If



Til:


Set autoriseret = Server.CreateObject ("ADODB.Recordset")
autoriseret.Open "SELECT * FROM PersonTabel WHERE Email = '" & Email & "' AND Password = '" & Password & "'", database

If Not autoriseret.EOF then
    Session("validering") = "valid"
    Session("personID") = autoriseret("personID")
    If funktion = "opret" then
        Response.Redirect("opret.asp?id=" & id)
    ElseIf funktion = "opdater" then
        Response.Redirect("opdater.asp?id=" & id)
    Else
        Response.Redirect("slet.asp?id=" & id)
    End If
End If
Avatar billede eagleeye Praktikant
12. maj 2003 - 00:38 #5
Og der er kun tilføjet en linje, og det er denne:
    Session("personID") = autoriseret("personID")
Avatar billede duno Nybegynder
12. maj 2003 - 00:49 #6
Skal jeg lave kolonnen i acces til en speciel type?? jeg kan da godt bare lave den til en text ik?

Jeg får stadig fejl!!

den siger ikke hvad fejlen er ... det har den ikke gjort hele dagen.. siger bare.. siden kan ikke vises
Avatar billede eagleeye Praktikant
12. maj 2003 - 00:50 #7
Prøv at slå denne fra i IE, så skulle du gerne få en bedre fejl kode/beskrivelse:

funktioner -> internetindstillinger -> avanceret -> fjern kryds i "ved meddelelse om uskadelige http-fejl"
Avatar billede eagleeye Praktikant
12. maj 2003 - 00:51 #8
Tænker du på personID kolonne i ??
Avatar billede eagleeye Praktikant
12. maj 2003 - 00:52 #9
Hvis personID i din brugerdatabase er autonummer. Så skal du lave personID i dagbog tabellen som tal. Så kan du nemlige let JOINe de to tabeller.
Avatar billede eagleeye Praktikant
12. maj 2003 - 00:58 #10
Jeg smutter i seng nu, jeg håber du får det til at virke.
Avatar billede duno Nybegynder
12. maj 2003 - 01:00 #11
det lader til at virke.. det var mig der havde lavet en brøler.. tester lige lidt mere.. og hvis det bliver ved med at virke.. har du dine points inden morgenstunden...

Indtil nu... MANGE TAK!!!

har siddet med det hele dagen... kunne ikke forstå fejlen!!!
Avatar billede duno Nybegynder
13. maj 2003 - 23:02 #12
Ja nu virker det da.. men hvordan hulen får jeg lukket den session igen... og smidt folk tilbage til det rigtige sted...???

Jeg har en REsponse.redirect som ser således ud..

Response.Redirect("dagbog.asp")

folk skal hen til

dagbog.asp?soeg=411&Submit=S%F8g&tid=DESC

men det ser helt forkert ud når jeg sætte det ind i stedet for...

Jeg tror at spørgsmålet voksede jeg smider 50 point mere i!!!

For rigtigt svar!!
Avatar billede eagleeye Praktikant
13. maj 2003 - 23:08 #13
Du kan lave din reduirect om til:

Response.Redirect("dagbog.asp?soeg=411&Submit=Søg&tid=DESC")


For at lukke en session igen bruges Session.Abandon. MEN den lukker for alle session varialb egså den som holder står på folk er logget ind så det er nok ikke den måde det skal gøre på.
Session timer automatisk ud efter 20 min eller når brugeresn forlader din side.

Du kan sætte den tom = "" hvis du vil:

Session("PersonID") = ""


Men en session er unik pr. bruger så en bruger kan ikke se en anden bruger session.
Avatar billede duno Nybegynder
13. maj 2003 - 23:11 #14
Sorry min fejl .. her er det link jeg skal pege på...

dagbog.asp?soeg=<%=rs("PersonID")%>&Submit=S%F8g&tid=DESC
Avatar billede eagleeye Praktikant
13. maj 2003 - 23:16 #15
arh..:)

Så prøv med:

Response.write "<a href=""dagbog.asp?sog=" & session("brugerID") & "&Submit=Søg&tid=DESC"">Her er Linket</a>"
Avatar billede duno Nybegynder
13. maj 2003 - 23:18 #16
jamen det skal ikke være et link.. den skal gøre det automatisk... åååh jeg må da give dig grå hår i hovedbunden!!... sorry..
Avatar billede eagleeye Praktikant
13. maj 2003 - 23:21 #17
Så skal det være redirect så prøv med:

Response.Redirect("dagbog.asp?soeg=" & session("brugerID") & "&Submit=Søg&tid=DESC")
Avatar billede duno Nybegynder
13. maj 2003 - 23:22 #18
Det skal være en eller anden form for Response.Redirect da den også skal gøre det hvis det er det forkerte password..
Avatar billede duno Nybegynder
13. maj 2003 - 23:28 #19
Hvis jeg ikke var sådan en fattigrøv ville du sku få 500 piont for det hele... du skal have mange gange tak... det var sku kanon.. nu køre det jo... kan jeg ikke sikre mig at det er dig der hjælper næste gang.. fit fut.. så køre skidtet... takker.. sender de points til dig!!
Avatar billede eagleeye Praktikant
13. maj 2003 - 23:32 #20
;) det lyder godt.
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