Avatar billede bif_pin Nybegynder
21. april 2004 - 11:29 Der er 10 kommentarer og
1 løsning

Session problem

Jeg har lavet denne test session kode:

<html>
<body>
<?
session_start();
session_register("minvar");
$minvar="min sesssion variabel";
echo "udskrift af session var: $minvar<br>";
?>
<a href="sessionside2.php">Session side 2</a>
</body>
</html>

Men får disse fejl når jeg kører den:

Warning: Cannot send session cookie - headers already sent by (output started at c:\apache\htdocs\sessiontest\sessionside1.php:4) in c:\apache\htdocs\sessiontest\sessionside1.php on line 6

Warning: Cannot send session cache limiter - headers already sent (output started at c:\apache\htdocs\sessiontest\sessionside1.php:4) in c:\apache\htdocs\sessiontest\sessionside1.php on line 6
udskrift af session var: min sesssion variabel
Session side 2

Nogle der kan løse problemet?

MVH TOM
Avatar billede jakobsynder Nybegynder
21. april 2004 - 11:31 #1
Du skal starte din session før du udskriver noget til skærmen.
Avatar billede Slettet bruger
21. april 2004 - 11:34 #2
Smid din kode op før <html> tags'ne.
Avatar billede Slettet bruger
21. april 2004 - 11:34 #3
<html> - tagget - mente jeg.
Avatar billede bif_pin Nybegynder
21. april 2004 - 13:00 #4
Tak gutter.
Det var sikkert nemt for jer men meget nyttigt for mig.

pacr00n forklaring var noget mere uddybende så derfor får han 75p og jacobsynder 25p
dog skal jeg lige have et svar fra jer.

MVH TOM.
Avatar billede jakobsynder Nybegynder
21. april 2004 - 14:17 #5
Årsagen til det er, at når du starter en session med session_start(), så sætter den en cookie på brugerens computer.
En cookie bliver sat ved hjælp af en HTTP header (HTTP er protokollen der benyttes til at transportere data på WWW).
En header _skal_ sendes inden noget indhold bliver sendt.
Så problemet består i, at du udskriver "<html>" og "<body" som bliver sendt til klienten, og derefter starter din session, som forsøger at sætte en cookie med en header.
Ergo får du fejl.

Behold du bare dine points. Held og lykke.
Avatar billede bif_pin Nybegynder
21. april 2004 - 14:39 #6
Tak for din uddybende forklaring jakobsynder.
Jeg troede at hvis jeg brugte session på den måde jeg lavde min test, så undgik jeg at placere en cookies på en klient computer. Vil det så sige at hvis en klient har slået cookies fra så virker siden ikke?

Hvis det er tilfælde hvorledes kan jeg så lave sessions uden at placere cookies på klient computeren?

Jeg vil ellers gerne ombestæmme mig og dele points mellem jer hvis det har interesse.
(kræver et svar)

MVH TOM
Avatar billede Slettet bruger
21. april 2004 - 15:21 #7
Tak - men jeg synes nu stadig vi skulle dele ;)

/ Pacroon
Avatar billede jakobsynder Nybegynder
21. april 2004 - 15:24 #8
Det vil det som udgangspunkt sige ja.
En webserver er ikke i stand til at 'huske' connections.
Den modtager en forespørgsel og sender et svar. Derfor er der kun få måder hvorpå man kan "simulere" at den husker det. Cookies, GET eller POST.
Alt data indeholdt i en session bliver gemt på webserveren. For at den ved hvilken session der tilhører hvilken bruger, bliver der gemt et unikt ID hos brugeren.
Per default bliver det gemt i en cookie, men PHP kan også gemme det via GET, altså som en querystring.
Avatar billede bif_pin Nybegynder
21. april 2004 - 23:22 #9
jacobsynder kom med et svar og jeg deler i porten.

Tusind tak for hjælpen til jer begge.

Lige en slutbemærkning: Kan man ikke lave session i en database således at man undgår at siden ikke vises hos fol som har slået cookies fra?

MVH Tom
Avatar billede jakobsynder Nybegynder
22. april 2004 - 00:16 #10
Det kan man sagtens jo. Men princippet er det samme, du gør bare manuelt hvad PHP kan gøre for dig.
Du gemmer data i en database og tildeler det et id. Det id skal gemmes hos brugeren på en eller anden måde, så du kan genkende vedkommende.
Det kan du gøre ved at gemme id'et i en cookie (det vil du undgå) eller ved at medsende det som querystring i hvert eneste link.
Så alle dine links ville skulle se ud som følger:
<a href='side.php?id=[unikt_bruger_id]'>beskrivelse</a>
- Det er ret overkill. Medmindre du udvikler et eller andet sygt avanceret, tophemmeligt og topsikkert system, så brug du bare cookies.
Selv eksperten bruger cookies.

Jeg behøver stadigvæk ingen points. Ellers tak.
Avatar billede bif_pin Nybegynder
08. juni 2004 - 22:01 #11
Her er en undskyldning for min forglemmelse. Her er de velfortjente points.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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