Bonsoir,
Sur mon site j'affiche un lien 'Deconnexion' qui recharge la page courante en ajoutant la variable ?action=destroy dans l'URL.
le fichier qui contient ce lien vérifie si cette variable existe dans l'URL. si elle existe, le script effectue un session_destroy(), puis le reste de la page est chargée.
Dans ce même fichier, mais plus bas dans le script, je test l'existence d'une session, pour afficher ou non le login, et un texte, ainsi que des liens, qui changent si la session existe ou non.
Mon problème est le suivant :
Lorsque je clique sur 'deconnexion', le code qui suis le session_destroy ne comprend pas que la session est fermée, et m'affiche mes liens et le login de la session juste détruite, comme si cette session existait encore.
Voici le problème en image :
Ici, l'URL est index.php, avec une session ouverte :
Je clique ensuite sur 'Déconnexion', l'URL devient index.php?action=destroy :
Alors que cela devrait m'afficher :
Le script qui génère tout ça :
<?php
// Fermeture de session
if(isset($_GET['action']) && $_GET['action'] == 'destroy')
{
session_destroy();
sleep(2);
}
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td style="color:#505050;font-size:12px;padding-left:5px;">Marketplace for world pictures</td>
<td align="right" style="color:#858585;font-size:12px;padding-right:5px;">
<?php echo $lang_welcome; ?>,
<?php
if(isset($_SESSION['user_login']))
{
echo $_SESSION['user_login'].' . ';
if($_SESSION['user_level'] == 2)
echo '<a href="admin/index.php">'.$lang_admin.'</a> . ';
echo '<a href="'.$_SERVER['PHP_SELF'].'?action=destroy'.$add.'">'.$lang_log_out.'</a> . ';
}
else
{
echo $lang_guest.' . ';
echo '<a href="auth.php">'.$lang_log_in.'</a> . ';
echo '<a href="register.php">'.$lang_register.'</a> . ';
}
?>
<?php
echo $lang_language.' : ';
?>
<a href="<?php echo $_SERVER['PHP_SELF']; ?>?lang=fr<?php echo $add; ?>"><img src="img/flag_fr.gif" alt="Français" border="0" /></a>
<a href="<?php echo $_SERVER['PHP_SELF']; ?>?lang=en<?php echo $add; ?>"><img src="img/flag_uk.gif" alt="English" border="0" /></a>
</td>
</tr>
</table>
Comme vous pouvez le voir, j'ai même essayer de mettre un sleep() pour laisser le temps au script de comprendre que la session était fermée, avant qu'il charge le reste de la page, même résultat.
Comment régler ce problème ?
Merci.