Session hjælp...

Tags:    php

Jeg er ved at bygge et meget simpelt sikkerheds system. I al sin enkelthed skal det gå ud på at der hele tiden i en sessionsvariabel indeholdes et brugerid, hvis brugeren er logget ind, ellers er der ikke noget i denne sessions variabel... mit problem er nedenstående kode, den virker fint, første gang, men når jeg kalder en anden side (eller den samme igen) fejler den og skriver at jeg ikke længere har en session:

denne kode inkluderes på index.php (og på sigt alle sider der skal lide under denne sikkerhed) således:

include_once(user_sess.php);

Fold kodeboks ind/udKode 


min index.php ser således ud:
Fold kodeboks ind/udKode 


problemet er at jeg første gang får udskrevet mit brugernavn, men kalder jeg index.php efterfølgende får jeg "ingen session"...


(¯`·._.·[Brian Hvarregaard]·._.·´¯)
Praesto et Persto



10 svar postet i denne tråd vises herunder
5 indlæg har modtaget i alt 9 karma
Sorter efter stemmer Sorter efter dato
Prøv at undlade at bruge include_once, når du har noget du skal have med hver gang. Skriv i stedet session_start(); i toppen af hver side, og inkludere alle dine andre ting derefter.

inde på php.net, findes der en forklaring om include_once():
... include_once() should be used in cases where the same file might be included and evaluated more than once during a particular execution of a script, and you want to be sure that it is included exactly once to avoid problems with function redefinitions, variable value reassignments, etc.... kilde: http://dk.php.net/include_once.

Det betyder, at hvis din kode ligger i cachen bliver denne ikke udført igen. Derfor kan det være at din session_start() kun bliver eksekveret een gang... Hvis du ikke vil skrive session_start() i toppen af alle dine filer, så ændre include_once() til include() og så burde det virke.

-------------------------------
Hilsen Jimmi Westeberg
http://www.westsworld.dk / http://www.aktivudvikler.dk



Jeg er ved at bygge et meget simpelt sikkerheds system. I al sin enkelthed skal det gå ud på at der hele tiden i en sessionsvariabel indeholdes et brugerid, hvis brugeren er logget ind, ellers er der ikke noget i denne sessions variabel... mit problem er nedenstående kode, den virker fint, første gang, men når jeg kalder en anden side (eller den samme igen) fejler den og skriver at jeg ikke længere har en session:

denne kode inkluderes på index.php (og på sigt alle sider der skal lide under denne sikkerhed) således:

include_once(user_sess.php);

Fold kodeboks ind/udKode 


min index.php ser således ud:
Fold kodeboks ind/udKode 


problemet er at jeg første gang får udskrevet mit brugernavn, men kalder jeg index.php efterfølgende får jeg "ingen session"...


(¯`·._.·[Brian Hvarregaard]·._.·´¯)
Praesto et Persto


Du har glemt session_start(); i dit index.php?
--
Albert Einstein
www.skovnissen.tk



HAHA nice fejl der - vel væk med det (edit :p)

[Redigeret d. 11/04-05 23:36:37 af runix]



Jeg vil da mene at han aktiverer session_start(); i den user_sess.php fil han har lavet. Så tror ikke det er fordi han ikke starter session_start(); (tror nærmere du havde ret runix, men du har slettet det igen :S)



nej for det virker første gang, og så kan det ikke være derfor.

måske du ikke har enablet cookies - så virker sessions kun "én gang" eller hvordan det hænger sammen - tåger for vildt atm. så gætter lidt :p

giv os en url til siden så vi kan lege :)

// runix

[Redigeret d. 12/04-05 00:44:35 af runix]



Du har ikke inkluderet session-filen i din index.php?


--
Ronni Egeriis



HAHA nice fejl der - vel væk med det (edit :p)

[Redigeret d. 11/04-05 23:36:37 af runix]



Jeg har ingen url, da det kører lokalt på min egen maskine (indtil mit webhotel kommer op og køre, herefter har jeg en URL). Jeg har noget kode der ligner lidt, hvor jeg gør det samme, og det virker fint. Så Sessions virker fint !!!


(¯`·._.·[Brian Hvarregaard]·._.·´¯)
Praesto et Persto



Takker Jimmi, jeg kigger på det når jeg når hjem, hvis det virker har du reddet min dag og venfortjente 200 up :-)

(¯`·._.·[Brian Hvarregaard]·._.·´¯)
Praesto et Persto



Når jeg bruger include_once() bliver det udført hver gang jeg åbner siden.

Hvorfor gør du dette:
header("Cache-control: private");

Jeg ved ikke om det kan have indflydelse på det.

Jeg testede lige dit script. Det virker fint her, så måske er det opsætningen på din server?

Jeg brugte dog PHP.NET, da det er det eneste jeg lige har på min egen computer og jeg ikke har adgang til ftp herfra :(

Hilsen

Martin Dybdal (Dybber)



Joo... det er bare mig der har skrevet forkert i koden her tilsiden, min sessions fil hedder user.sec.php og ikke det som jeg har skrevet i toppen af index.php

(¯`·._.·[Brian Hvarregaard]·._.·´¯)
Praesto et Persto



t