Ik heb een klein beheersysteempje gemaakt in PHP, en authenticering
verloopt via sessies. Helaas knalt de gebruiker er van tijd tot zo maar
uit, lijkt het, onafhankelijk van gebruikte browser. Is dit een enigszins
bekend probleem?
De sessieinstellingen lijken allemaal defaults te zijn. Zo ook
session.gc_maxlifetime, die op 1440 seconden staat (24 minuten). Het
'eruitknallen' gebeurt eerder dan dat, vaak binnen de minuut al. Ik heb
niet kunnen bepalen of het onder bepaalde voorwaarden gebeurt.
Op een loginscherm geeft de gebruiker naam + wachtwoord op. Kloppen deze
gegevens, dan krijgt z/hij toegang tot het beheersysteem. Kloppen ze niet,
dan keert de gebruiker terug op het loginscherm.
Dat gaat ongeveer zo:
login.php: session_start();
login.php: $_SESSION['loggedon'] = false;
login.php: if (validuser()) {
login.php: $_SESSION['loggedon'] = true;
login.php: header("Location:admin.php");
login.php: exit;
login.php: }
login.php: else {
login.php: $errormessage = 'U bent geen geldige gebruiker op dit
systeem.';
login.php: }
('validuser()' is daarbij een eigen functie die er hier verder niet toe
doet.) Verder laat login.php een invulformulier voor gebruikersnaam en
wachtwoord zien, en eventuele foutmeldingen (zoals de bovenstaande, wanneer
de login fout gaat).
Op de beheerpagina wordt vervolgens gecontroleerd of de gebruiker is
ingelogd:
admin.php: session_start();
admin.php: $leave = false;
admin.php:
admin.php: if (if isset($_POST['logout']) && $_POST['logout']=='logout') {
admin.php: $leave = true;
admin.php: }
admin.php:
admin.php: if (isset($_SESSION['loggedon'])) {
admin.php: if (!$_SESSION['loggedon']) {
admin.php: // wrong username
admin.php: $leave = true;
admin.php: $_SESSION['error'] = 'Nice try, buster';
admin.php: }
admin.php: }
admin.php: else {
admin.php: // username not set, so incorrect
admin.php: $leave = true;
admin.php: }
admin.php:
admin.php: if ($leave) {
admin.php: session_destroy();
admin.php: header("Location:login.php");
admin.php: exit;
admin.php: }
Komt de uitvoering van het script voorbij dit punt, dan gaat alles
blijkbaar goed in krijgt de gebruiker toegang tot het beheer gedeelte.
Het blijkt echter regelmatig mis te gaan op de volgende regel:
if (isset($_SESSION['loggedon']))
Met andere woorden, PHP kan die sessievariabele niet vinden.
Doe ik iets verkeerd? Kan het aan de browser liggen (getest met Firefox 0.8
en MSIE 6.0, beiden onder MS Windows)? Kan het aan de server liggen?
--
Branko Collin
if you reply by e-mail, please change invalid to nl and z to s
(but replies to the news group are preferred)

Likes:
![[PHP] Sessies die spontaan verloren gaan](https://www.webhostingtalk.nl/images/WHT_rd/misc/dT.png)
Quote