Avatar billede neocron Nybegynder
02. oktober 2007 - 19:43 Der er 10 kommentarer og
1 løsning

Sessions huskes pludselig ikke mellem flere sider

Hej,
Jeg har fået et lidt besynderligt problem. Ihvertfald ikke noget jeg har været udsat for før.

Jeg har en webserver kørende (Win 2003 server) med en IIS som kører PHP(5). Det har kørt glim-ragende indtil for nylig. Mine sessioner huskes kun på den side hvor de er definerede.

Det vil sige at hvis jeg starter en session på session1.php:

<?php
session_start();
$_SESSION["sestest1"] = "Test 1";
$_SESSION["sestest2"] = "Test 2";
$_SESSION["sestest3"] = session_id();
session_write_close();

echo $_SESSION["sestest1"] . "<br>";
echo $_SESSION["sestest2"] . "<br>";
echo $_SESSION["sestest3"] . "<br>";

echo "<a href=\"session2.php\">Se side 2</a>";
?>

Her laver vi en output test af disse variabler, og de outputtes fint. Straks værre bliver det når vi klikker på linket som kalder session2.php som ser sådan her ud:

<?php
session_start();
/* Output: Data 1: Data 2: Data 3: */
echo "Data 1: " . $_SESSION["sestest1"];
echo "Data 2: " . $_SESSION["sestest2"];
echo "Data 3: " . $_SESSION["sestest3"];
?>

I og med at det har virket undrer jeg mig over hvad der kan være gået galt her. Jeg kan ikke mindes at jeg har ændret/tweaket noget. Jeg har løbet php.ini filen uden at finde noget der lige faldt for øje.

Har I nogle råd?
Avatar billede nielle Nybegynder
02. oktober 2007 - 19:55 #1
Fungere det hvis du fjerner kaldet til session_write_close() ?
Avatar billede nielle Nybegynder
02. oktober 2007 - 19:59 #2
... det gør formentlig ikke nogen forskel ...
Avatar billede neocron Nybegynder
02. oktober 2007 - 20:03 #3
Det gør desværre ikke nogen forskel at fjerne session_write_close().
Avatar billede erikjacobsen Ekspert
02. oktober 2007 - 20:23 #4
Sørg for at få indstillet php til at vise alle advarsler ( http://php.net/error_reporting )
Det kan skyldes at kataloget, hvor php skriver sessions-information "pludselig" er blevet skrivebeskyttet eller er forsvundet.
Avatar billede neocron Nybegynder
02. oktober 2007 - 21:27 #5
error_reporting står i PHP.ini til E_ALL.
Jeg har forsøgt i toppen begge filer at tilføje en

error_reporting(E_ALL | E_STRICT);

Men der afsløres ingen fejl.
Avatar billede erikjacobsen Ekspert
02. oktober 2007 - 21:37 #6
Godt, så skal jeg spørge om du kigger på den via http://localhost/...  ?
Avatar billede neocron Nybegynder
02. oktober 2007 - 21:41 #7
Både og. Jeg kører min egen webservice, og jeg går normalt ind og ser den udefra, altså http://min_wan_ip/session1.php.

Det gør dog ingen forskel om jeg kryber ned i hjørnet af rummet og logger på serveren og tester fra localhost/session1.php. error_reporting spytter ingen fejl i nakken af mig.
Avatar billede erikjacobsen Ekspert
02. oktober 2007 - 21:47 #8
Det kan sagtens ske at sessions ikke virker med localhost, men med et rigtigt domæne. De bør dog også virke med ip-nummer.

Windows-server og PHP er ikke lige min kop darjeeling, så jeg har ikke lige andre forslag.
Avatar billede neocron Nybegynder
02. oktober 2007 - 21:53 #9
Det skumle er netop at det har fungeret fint :)
Avatar billede neocron Nybegynder
02. oktober 2007 - 21:55 #10
Tror at jeg prøver at geninstallere PHP. Det kunne være at et eller andet har lavet kage i det.
Avatar billede neocron Nybegynder
07. oktober 2007 - 02:37 #11
Jeg lukker denne. Har fundet yderligere information på denne og oprettet ny.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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