[RESOLU] PHP : problème avec les cookies - Accéder aux cookies de tous les dossiers

On dirait que le proverbe ‘Un de perdu, 10 de trouvés’ s’applique aussi bien aux femmes qu’aux problèmes en php !!! :slight_smile:

Voici mon problème cette fois-ci :confused:

J’ai un fichier qui est dans le dossier racine dans l’arborescence du site, et un autre qui est dans un dossier du site, que nous allons appeler “dossier” pour nous faciliter la tache.

script contenu dans la page page.php du dossier :


<?
$a_entrer_dans_le_cookie='bonjour';
setcookie("bonjour","$bonjour",3600);
?> 

Ce script me permet de rentrer la valeur ‘bonjour’ dans le cookie bonjour.

Le seul problème, c’est que j’aimerais pouvoir accéder à ce cookie depuis le dossier racine de mon site, hors quand je fais


<?
echo $_COOKIE['bonjour'];
?>

cela ne me retourne rien

Comment faire, merci de votre aide

Regarde du côté du quatrième paramètre de setcookie (et au passage, c’est pas <? c’est <?php qu’il faut faire, <? c’est pas portable).

setcookie( ‘foo’, ‘foo’, 3600, ‘/’ );

Ca définit le path sur lequel le cookie est valide (ou le domaine, 'faut voir avec la fonction j’ai plus en tête le proto exact).

Au passage (bis), “$xxx” c’est debile.

Laisse donc $bonjour au lieu de "$bonjour" (en gros, avec ça tu dis à php de passer en mode chaîne de caractères, de bufferiser les données, pour juste prendre la valeur de ta variable $bonjour == débile).

Merci, mais je n’ai pas tout compris :

tout d’abord je n’ai pas bien compris pourquoi on doit mettre <?php et pas <?

et secondement : je n’ai pas compris ce que le / désignait dans : setcookie( ‘foo’, ‘foo’, 3600, ‘/’ );, il désigne le dossier racine , n’est ce pas ???

Enfin, comment faire pour supprimer le cookie : un setcookie("bonjour") suffit-il ou faut-il rajouter le / quelque part ?

<? est une notation qui rentre en conflit avec les entêtes XML (<?xml) , mais aussi <? est une notation qui peut être désactivée sur à peu près tous les serveurs. Moralité? ton script ne fonctionnera que sur une infime fraction d’entre eux (puisqu’en sus, il est prévu de ne plus autoriser cette notation par défaut donc bon…). <?php est par contre la seule façon valable de commencer du PHP.

Pour le ‘/’, http://fr.php.net/manual/fr/function.setcookie.php

En particulier : un cookie a une durée d’expiration, un domaine sur lequel il existe (ici, tu as le domaine www.clubic.com) et enfin un chemin d’accès que lequel il est accessible.

Par exemple, si tu déclares un cookie sur un site perso lycos (genre www.lycos.com/trucmuche), Lycos.com ne pourra pas accéder au cookie (et tant mieux).

Ce que tu dois mettre, toi, c’est ‘/’ pour dire “le cookie est valide partout”.

J’ai pas bien compris : si j’étais hébergé chez Lycos et que je mettais / dans le setcookie, lycos pourrait le lire ?

Oui. Ca veut dire que le cookie est accessible depuis la racine, donc Lycos peut le lire (mais je doute qu’ils le fasse de toute façon).

Merci

Mais si on a une adresse du genre http://mon_site.free.fr

Free peut-il le lire ?

Non. C’est pas le même domaine.

ok merci