Sessie wordt niet echt gedestroyed in FF

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Patrick G

patrick G

28/10/2007 22:13:00
Quote Anchor link
Ik heb deze code gebruikt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
}
?>


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 ?
 
PHP hulp

PHP hulp

24/12/2024 18:35:53
 
PHP erik

PHP erik

28/10/2007 22:15:00
Quote Anchor link
Ik denk dat het gewoon de cache is waarmee je te maken hebt. Als je refresht zal je wel uitgelogd zijn.
 
Patrick G

patrick G

28/10/2007 22:22:00
Quote Anchor link
Dat helpt niet. Want dan kan ik ook nog gewoon terug.
 
Jaws

Jaws

28/10/2007 23:21:00
Quote Anchor link
WEet je zeker dat de sessie echt destroyed word in die elseif?
Zet anders eens een echo in die elseif om zeker te weten dat hij daar door heen gaat.
 
Patrick G

patrick G

29/10/2007 12:19:00
Quote Anchor link
Dat heb ik al gedaan, dat helpt niet (waarom zou het dan in IE goed gaan ?)
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 ?
 
Joren de Wit

Joren de Wit

29/10/2007 12:25:00
Quote Anchor link
Ik zou de gebruiker na het uitloggen direct doorsturen naar een andere pagina. Op die manier kan er ook geen gebruik gemaakt worden van geposte variabelen op de vorige pagina.

Quote:
Kan je een $_POST ook unsetten ?
Jazeker! Gebruik unset() om een $_POST variabele te unsetten:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
unset($_POST['var']);
?>

Om de hele $_POST array te legen kun je beter dit gebruiken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$_POST
= array();
?>
 
Patrick G

patrick G

29/10/2007 12:30:00
Quote Anchor link
Thx blanche, ga ik straks thuis ff lekker knutselen.

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.
 
Joren de Wit

Joren de Wit

29/10/2007 12:36:00
Quote Anchor link
Quote:
Het doorsturen naar een andere pagina werkte ook niet
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.

Een alternatief is een meta-refresh:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
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)
PHP script in nieuw venster Selecteer het PHP script
1
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>
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Patrick G

patrick G

29/10/2007 22:57:00
Quote Anchor link
Ik heb nu alles in mijn code aangepast als volgt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
    session_unset();
    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
 
Jan Koehoorn

Jan Koehoorn

29/10/2007 23:04:00
Quote Anchor link
Probeer eens zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
    $_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
 
Patrick G

patrick G

29/10/2007 23:24:00
Quote Anchor link
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
Gewijzigd op 01/01/1970 01:00:00 door patrick G
 
Jurgen assaasas

Jurgen assaasas

29/10/2007 23:34:00
Quote Anchor link
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


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).
 
Patrick G

patrick G

30/10/2007 00:06:00
Quote Anchor link
Handig ja,
Veilig ? Nee !
 
PHP Newbie

PHP Newbie

30/10/2007 01:02:00
Quote Anchor link
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.