[Sécurité] Session_regenerate_id() déclenche l'erreur headers already sent.
Bonjour,
J'utilise les sessions et pour ce faire j'effectue bien sur un session_start() en haut de chaque page. Cela fonctionne bien.
On me dit que pour la sécurité mieux vaut utiliser session_regenerate_id().
J'ai donc un fichier, nommé liens-inscriptions, qui s'inclue dans toutes les pages et dont voici le script :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
//si le session n'est pas ouverte (visiteur non identifié)
if(!isset($_SESSION[id]))
{echo'
Bienvenue invité ( <a href="identification.php">Connexion</a> |
<a href="inscription-condition.php">Inscription</a> )';}
//si la session est ouverte
else
{
echo"
Bienvenue $_SESSION[pseudo] (
<a href=\"compte-accueil.php\">Tableau de bord</a> |
<a href=\"A href="http://www.site.com/deconnexion.php\">
déconnexion</a>
)"
;
//ici on compare le temps actuel avec le temps lors de l'identification
//si il y a 30 minutes sans réactualisation de page, on va tout fermer
if(time()-$_SESSION['dernier_acces']>1800)
{
session_destroy();
session_unset();
}
//si le délais n'est pas dépassé, on réinitialise la variable de session au temps actuel.
else
{
$_SESSION['dernier_acces'] = time();
session_regenerate_id();
}
;} |
là vous pouvez voir le session_regenerate_id() coupable, qui déclenche l'erreur suivante:
Code:
1 2 3 4 5 6
|
Warning: session_regenerate_id():
Cannot send session cookie -
headers already sent by
(output started at /home/site/www/index.php:8 in
/home/site/scripts/liens-inscription.php on line 26 |
D'où vient l'erreur à votre avis ?