Ik vraag me af waar ik in mijn situatie 'session_start' moet plaatsen.
Wat ik nu heb (ingekort): 2 bestanden, index.php en include.php, waarbij de tweede in de eerste ge-include word.
include.php, met o.a.
index.php, met een class, en de inititalisatie van die class.
Op de ontwikkel server gaat alles goed, sessies worden aangemaakt bij het inloggen, en vernietigd bij het uitloggen.
Nou heb ik alles net op een productie server getest, en krijg ik de error:
Het enige verschil tussen de versies van php op die servers is zo te zien dat op de prod.
server 'session.use_trans_sid' false is, en op de ontwikkel true. Maar als ik op de ontwikkelserver
doe, om de boel gelijk te trekken, werkt het script op de ontwikkel server nog steeds...
Nou heb ik ontdekt dat ik 'session_start()' net boven 'session_destroy()' kan zetten in de functie 'logout',
en dat daarmee het probleem op de prod. server is opgelost. Op de ontwikkelserver krijg ik dan echter deze melding dat de sessie al gestart is....
Wat ik nu heb (ingekort): 2 bestanden, index.php en include.php, waarbij de tweede in de eerste ge-include word.
include.php, met o.a.
PHP:
1
| session_start() ; |
index.php, met een class, en de inititalisatie van die class.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| $bla = new sess_class(); class sess_class { function sess_class() { if ($_POST['login']) { $this->login(); } else if ($_GET['logout']{ $this-logout(); } header('location: '.$_SERVER['PHP_SELF']); } function login() { $_SESSION['lalalala'] = '234567'; $_SESSION['pomtiepom'] = 'floep'; } function logout() { session_unset(); session_destroy(); } } |
Op de ontwikkel server gaat alles goed, sessies worden aangemaakt bij het inloggen, en vernietigd bij het uitloggen.
Nou heb ik alles net op een productie server getest, en krijg ik de error:
PHP:
1
2
| Warning: session_destroy(): Trying to destroy uninitialized session in index.php on line 32 |
Het enige verschil tussen de versies van php op die servers is zo te zien dat op de prod.
server 'session.use_trans_sid' false is, en op de ontwikkel true. Maar als ik op de ontwikkelserver
PHP:
1
| ini_set('session.use_trans_sid', false); |
doe, om de boel gelijk te trekken, werkt het script op de ontwikkel server nog steeds...
Nou heb ik ontdekt dat ik 'session_start()' net boven 'session_destroy()' kan zetten in de functie 'logout',
en dat daarmee het probleem op de prod. server is opgelost. Op de ontwikkelserver krijg ik dan echter deze melding dat de sessie al gestart is....
[ Voor 13% gewijzigd door klokop op 27-02-2004 10:49 ]
"Passing silhouettes of strange illuminated mannequins"