Ik ben bezig met een klein cms'je voor een website.
Alleen heb ik een vaag probleemje met m'n sessies.
Zodra een gebruiker inlogd komt de volgende code:
En op elke pagina wordt deze include gebruikt om te controleren of de sessie wel klopt:
En als laatste om uit te loggen heb ik de volgende code:
Het lijkt allemaal goed te gaan. En ik kom terug in index.html waar het inlog formulier zich bevindt.
Alleen als ik nu op de back knop druk in m'n browser, werkt dat gewoon en ben ik nog steeds ingelogd?
Ik heb de sessie gekilled en php roept die dan spontaan weer in leven?
Ik heb het gecontroleerd door de sessie variablen op te roepen binnen script in het cms, maar die leven dus vrolijk door.
Weet iemand wat ik verkeerd doe?
Alleen heb ik een vaag probleemje met m'n sessies.
Zodra een gebruiker inlogd komt de volgende code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| $query = "select * from users where username='{$_POST['user']}' and password='{$_POST['pass']}'"; $result = mysql_query($query); $fetch = mysql_fetch_assoc($result); $num_rows = mysql_num_rows($result); if($num_rows > 0) { session_start(); $_SESSION['pkUserID'] = $fetch['pkUserID']; $_SESSION['username'] = $fetch['username']; $_SESSION['password'] = $fetch['password']; header("Location: ../nieuws.php"); } else { print("<script>alert(\"Gebruikersnaam of wachtwoord onjuist!\"); location.replace(\"../index.html\"); </script>"); die(); } |
En op elke pagina wordt deze include gebruikt om te controleren of de sessie wel klopt:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| session_start(); session_cache_limiter('private, must-revalidate'); if(!isset($_SESSION['pkUserID'])) { session_destroy(); header("Location: {$html_path}index.html"); die(); } $query = "select * from users where username='{$_SESSION['username']}' and password='{$_SESSION['password']}' and pkUserID={$_SESSION['pkUserID']}"; $result = mysql_query($query); if(mysql_num_rows($result) < 1) { session_destroy(); header("Location: {$html_path}index.html"); die(); } unset($fetch); |
En als laatste om uit te loggen heb ik de volgende code:
PHP:
1
2
3
4
5
6
7
8
| $_SESSION['pkUserID'] = ""; $_SESSION['username'] = ""; $_SESSION['password'] = ""; session_destroy(); header("Location: index.html"); die(); ?> |
Het lijkt allemaal goed te gaan. En ik kom terug in index.html waar het inlog formulier zich bevindt.
Alleen als ik nu op de back knop druk in m'n browser, werkt dat gewoon en ben ik nog steeds ingelogd?
Ik heb de sessie gekilled en php roept die dan spontaan weer in leven?
Ik heb het gecontroleerd door de sessie variablen op te roepen binnen script in het cms, maar die leven dus vrolijk door.
Weet iemand wat ik verkeerd doe?
Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen