Sessie wordt niet echt gedestroyed in FF
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
session_start();
?>
<html>
<head><title>Uitloggen </title>
<link rel="stylesheet" type="text/css" href="css/zsg.css">
</head>
<body>
<?php
if (!IsSet($_SESSION['user'])) {
?>
<center><font size="-1">U moet ingelogd zijn om uit te kunnen loggen, <a href="login.php"> uw eigen account of login.</a></font></center>
<?php
} elseif (IsSet($_SESSION['user'])) {
session_unset();
session_destroy();
?>
<center><font size="-1">U bent succesvol uitgelogd!</font></center>
<?php
}
?>
session_start();
?>
<html>
<head><title>Uitloggen </title>
<link rel="stylesheet" type="text/css" href="css/zsg.css">
</head>
<body>
<?php
if (!IsSet($_SESSION['user'])) {
?>
<center><font size="-1">U moet ingelogd zijn om uit te kunnen loggen, <a href="login.php"> uw eigen account of login.</a></font></center>
<?php
} elseif (IsSet($_SESSION['user'])) {
session_unset();
session_destroy();
?>
<center><font size="-1">U bent succesvol uitgelogd!</font></center>
<?php
}
?>
Maar als ik de back button gebruik in FF, blijkt deze gewoon de gegevens te bewaren. IE sluit wel netjes af trouwens.
Hoe los ik het op dat FF ook de sessie af sluit ?
Ik denk dat het gewoon de cache is waarmee je te maken hebt. Als je refresht zal je wel uitgelogd zijn.
Dat helpt niet. Want dan kan ik ook nog gewoon terug.
Zet anders eens een echo in die elseif om zeker te weten dat hij daar door heen gaat.
Ik kan het nu niet testen omdat ik op mijn werk zit, maar ik vraag me ineens af of het komt omdat op de pagina waar ik daarna terug ga een $_POST staat die de sessie opnieuw initialiseert.
Kan je een $_POST ook unsetten ?
Quote:
Jazeker! Gebruik unset() om een $_POST variabele te unsetten:Kan je een $_POST ook unsetten ?
Om de hele $_POST array te legen kun je beter dit gebruiken:
en ook:
Het doorsturen naar een andere pagina werkte ook niet, in FF kun je gewoon met het driehoekje naast de back button terug. En dan wordt die sessie gewoon weer aangemaakt.
Quote:
Hoezo niet? Een header() zal hier inderdaad niet werken omdat je je logica en output niet gescheiden houdt waardoor er voor die header() al output naar de browser verstuurd is.Het doorsturen naar een andere pagina werkte ook niet
Een alternatief is een meta-refresh:
Code (php)
1
2
3
2
3
<?php
echo '<meta http-equiv="refresh" content="0;URL=http://www.jouwadres.nl/" />';
?>
echo '<meta http-equiv="refresh" content="0;URL=http://www.jouwadres.nl/" />';
?>
Dit is echter maar een alternatief, ik zou ervoor kiezen om je script zo te schrijven dat output en logica strict gescheiden zijn...
ps. Zo zou het stukken beter zijn:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
error_reporting(E_ALL);
session_start();
if(isset($_SESSION['user']))
{
$melding = 'U moet ingelogd zijn om uit te kunnen loggen, <a href="login.php"> uw eigen account of login.</a>';
}
else
{
$_SESSION = array();
$melding = 'U bent succesvol uitgelogd';
header('Refresh: 3; url=home.php');
}
?>
<html>
<head><title>Uitloggen </title>
<link rel="stylesheet" type="text/css" href="css/zsg.css">
</head>
<body>
<center><font size="-1"><?php echo $melding; ?></font></center>
</body>
</html>
error_reporting(E_ALL);
session_start();
if(isset($_SESSION['user']))
{
$melding = 'U moet ingelogd zijn om uit te kunnen loggen, <a href="login.php"> uw eigen account of login.</a>';
}
else
{
$_SESSION = array();
$melding = 'U bent succesvol uitgelogd';
header('Refresh: 3; url=home.php');
}
?>
<html>
<head><title>Uitloggen </title>
<link rel="stylesheet" type="text/css" href="css/zsg.css">
</head>
<body>
<center><font size="-1"><?php echo $melding; ?></font></center>
</body>
</html>
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Code (php)
1
2
3
4
5
2
3
4
5
session_unset();
session_destroy();
unset($_POST['users_naam']);
$_POST = array();
header('Refresh: 3; url=afterlogin.php');
session_destroy();
unset($_POST['users_naam']);
$_POST = array();
header('Refresh: 3; url=afterlogin.php');
Maar ik krijg in FF bij de back button gewoon de melding dat de postgegevens zijn verlopen in de buffer , maar dat alle gegevens die het formulier bevatte opnieuw verzonden zullen worden.
Ook al zit ik inmiddels 10 maal F5 en 3 andere sites verder !
probeer zelf maar eens.
de header refresh die je aangeeft, werkt overigens niet op deze manier , maar ik heb alleen quick n dirty ge-paste en niet gekeken of er een syntaxfout in zit.
Gewijzigd op 01/01/1970 01:00:00 door patrick G
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$_SESSION = array ();
if (isset ($_COOKIE[session_name ()])) {
setcookie (session_name (), '', time () - 42000, '/');
}
session_destroy ();
?>
$_SESSION = array ();
if (isset ($_COOKIE[session_name ()])) {
setcookie (session_name (), '', time () - 42000, '/');
}
session_destroy ();
?>
Edit:
Single quotes om 'session_name ()' verwijderd
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
zucht...... goeie feature als je vergeetachtig bent, maar ik ben er niet blij mee.
Ik heb het nog even nagekeken op een pagina waar ik met 2 logins in kan.
Maar ook dan kan ik na inloggen met naam 2 gewoon terug naar login 1 zonder ww of user in te toetsen.
edit:
Is gewoon een feature bij firefox extra->opties-> informatie die ik invoer in de taakbalk of formulieren onthouden.
Dat betekent dat een multi-user pc met FF dus niet wachtwoord veilig is totdat je alle gegevens wist.
/edit
Gewijzigd op 01/01/1970 01:00:00 door patrick G
patrick schreef op 29.10.2007 23:24:
idem, back toets en alle gegevens worden hersteld door FF (v2.0.0.8)
zucht...... goeie feature als je vergeetachtig bent, maar ik ben er niet blij mee.
Ik heb het nog even nagekeken op een pagina waar ik met 2 logins in kan.
Maar ook dan kan ik na inloggen met naam 2 gewoon terug naar login 1 zonder ww of user in te toetsen.
edit:
Is gewoon een feature bij firefox extra->opties-> informatie die ik invoer in de taakbalk of formulieren onthouden.
Dat betekent dat een multi-user pc met FF dus niet wachtwoord veilig is totdat je alle gegevens wist.
/edit
zucht...... goeie feature als je vergeetachtig bent, maar ik ben er niet blij mee.
Ik heb het nog even nagekeken op een pagina waar ik met 2 logins in kan.
Maar ook dan kan ik na inloggen met naam 2 gewoon terug naar login 1 zonder ww of user in te toetsen.
edit:
Is gewoon een feature bij firefox extra->opties-> informatie die ik invoer in de taakbalk of formulieren onthouden.
Dat betekent dat een multi-user pc met FF dus niet wachtwoord veilig is totdat je alle gegevens wist.
/edit
Die functie is zeer handig, ook als je firefox vastloopt en je doet bij de volgende restart van firefox restore session en al je ingevulde velden zijn ook zover ingevuld als jij was(als je bezig zou zijn met formulieren).
Veilig ? Nee !
Hoe veilig het is hangt af van jouw systeem. Je zult toch echt wat meer code van je pagina moeten laten zien, anders ben ik bang dat we je neit kunnen helpen.