Pb avec $_COOKIE

Résolu/Fermé
lamouchetsetse Messages postés 112 Date d'inscription samedi 2 août 2014 Statut Membre Dernière intervention 21 septembre 2021 - Modifié le 7 mai 2019 à 21:56
lamouchetsetse Messages postés 112 Date d'inscription samedi 2 août 2014 Statut Membre Dernière intervention 21 septembre 2021 - 7 mai 2019 à 23:20
Bonjour, j’ai créer un petit script pour protéger mes session inspirer de ce tuto:

https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2918871-les-variable-de-session

mais il ne fonctionne que partiellement.

voici le script:

tout commence avec cette page:
<?php
//indexTestNav.php

include("testNav.php");
 
if(empty($_COOKIE['un']))
{
    echo 'pas de cookie<br/>';
    demarre_session();
}
elseif(isset($_COOKIE['un']))
{
    verif_session();
}
?>
 
<!DOCTYPE html>
<html>
    <head>
        <title>indexTestNav</title>
        <meta charset="utf-8"/>
    </head>
    <body>
        <header>
          <h1>indexTestNav</h1>
        </header>
        <section>
            <a href="testNav2/testNav2.php">testNav2.php</a><br/><br/>
        </section>
    </body>
</html>


ensuite la page qui fait les tests:

<?php
//testNav.php

session_start();
 
if(empty($_SESSION['test']))
{
    $_SESSION['test'] = 0;
    //echo 'pas de cookie<br/>';
}
 
function demarre_session()
{
    $cookie_name = 'un';
    $plusPlus = $_SESSION['test']++;
    setcookie($cookie_name, $plusPlus, time() + 60 * 30, null, null, false, true);
    $_SESSION['un'] = $plusPlus;
    //exit();
 }
 
function verif_session()
{
    echo '   2$_COOKIE[un] => '.$_COOKIE['un'].'<br/>';
    echo '   2$_SESSION[un] => '.$_SESSION['un'].'<br/><br/>';
 
    if(isset($_COOKIE['un']) && isset($_SESSION['un']) && $_COOKIE['un'] == $_SESSION['un'])
    {
        demarre_session();
    }
    else/*if(isset($_COOKIE['un']) && isset($_SESSION['un']) && $_COOKIE['un'] != $_SESSION['un'])*/
    {
        echo 'session et cookie sont !=<br/><br/>';
    }
}
?>


puis la derniere page:

<?php
//testNav2.php

include("../testNav.php");
 
verif_session();
?>
 
<!DOCTYPE html>
<html>
    <head>
        <title>testNav2</title>
        <meta charset="utf-8"/>
    </head>
    <body>
        <header>
          <h1>testNav2</h1>
        </header>
        <section>
            <a href="../indexTestNav.php">indexTestNav.php</a><br/><br/>
        </section>
    </body>
</html>


Le problème ce trouve sur la dernière page, mes variables cookie et session ne sont jamais égales. Par contre sur la première page "indexTestNav.php" c'est toujours bon.

J'ai effectué ce test en aillant tout les fichier dans le même répertoire et la pas de soucis, ça marche dans tout les cas.

Ma question donc, comment faire pour que ça fonctionne quelque soit le répertoire ou ce trouvent les fichiers?

Merci beaucoup.



Configuration: Linux / Firefox 66.0

1 réponse

lamouchetsetse Messages postés 112 Date d'inscription samedi 2 août 2014 Statut Membre Dernière intervention 21 septembre 2021 2
7 mai 2019 à 23:20
c'est bon, j'ai trouvé la réponse, il suffit de mettre ub "/" dans les paramètres de création du cookie pour qu'il soit disponible dans tout les répertoire comme ceci:
setcookie('monCookie', 0, time() - 10, "/", null, false, true);
0