Beste forumleden,

Ik krijg mijn sessions niet aan de praat en ik weet niet wat ik fout doe.
Ik heb 3 bestanden: registreer.php, login.php en profiel.php (ze beginnen allemaal met de regel session_start();

In login.php is er een query die kijkt of de ingevoerde formdata klopt, en maakt een sessie. Om dit te controleren staat hier bovenaan in het bestand (tijdelijk, na session_start();):

if (isset($_SESSION['id'])) {
	print 'LOGIN.PHP: SESSIE ID GEMAAKT, INGELOGD!';
	exit();
} else {
	print 'LOGIN.PHP: GEEN SESSIE ID, NIET INGELOGD!';
//	exit();
}


Aangezien de gebruiker enkel profiel.php mag zien wanneer hij ingelogd is, heb ik dit soort "if" nodig.
Om te testen bij profiel.php, staat hier bovenaan in het bestand (ook tijdelijk, na session_start();

if (!(isset($_SESSION['id']))) {
	print 'PROFIEL.PHP: GEEN SESSION ID: NIET INGELOGD!';
	exit();
} else {
	print 'PROFIEL PHP: SESSION ID: INGELOGD!';
	exit();
}


En ook bij registreer.php:
if (isset($_SESSION['id'])) {
	print 'REGISTREER.PHP: INGELOGD!';
	exit();
} else {
	print 'REGISTREER.PHP: NIET INGELOGD!';
	exit();
}



De session id registreren in login.php werkt, bij refresh zegt hij dan ook dat ik ingelogd ben. Echter profiel.php en registreer.php zeggen dat ik NIET ingelogd ben. Ik weet echt niet wat ik fout doe. Alle pagina's beginnen met
session_start();
. Weet iemand het?


Dan gebruik je ook geen sessions en heb je dit probleem dus ook niet....

Het sessie id wordt opgeslagen in een cookie, of je het wil of niet.
Danny A-noniem op 30/12/2013 16:17:57

gebruik geen cookies...


Jij niet, maar een session wel.
Misschien dit...

Op vrijwel elke pagina met de session staat er dit:
<?php
// LOGIN.PHP

session_start();

// redirect als user al ingelogd is
if ((isset($_SESSION['id'])) && ($_SESSION['id']!='')) {
    header("Location: profiel.php");
    exit();
}


Wat ik bedoel
&& ($_SESSION['id'] !=''))


Maar volgens mij bedoel je dit:
&& ($_SESSION['id'] !==''))


Wat betekend dat hij niet leeg mag zijn.

Je kunt beter gebruiken:
&& (!empty($_SESSION['id']))

Dat zorgt ervoor dat je dit soort verwarringen niet krijgt.

Zeg maar als ik het fout heb :D
Clear je cache eens, en start je browser opnieuw op.

Daarnaast kan je eens dit zetten bovenaan je login.php file:

var_dump($_SESSION);
ik neem mijn woorden terug...
weer wat geleerd...

dacht echt dat het 2 verschillende manieren waren.
excusses..

getest en klopt. dank u allen

Reageren