Page 1 sur 2
$_COOKIE qui ne fonctionne pas
Posté : 01 mars 2016, 20:09
par Blaise032
J'ai quelques lignes de code qui fonctionnent en easyphp:
// LECTURE COOCKIE
// on teste la déclaration de notre cookie
if (isset($_COOKIE['cookie_email'])) {
$email=$_COOKIE['cookie_email'];
}
else {
echo 'vous devez accepter les cookies';
exit;
}
Mais en production, il m'envoie le message 'vous devez accepter les cookies'
Pourquoi ?
Re: isset($_COOKIE
Posté : 01 mars 2016, 20:30
par or 1
une raison peut être que le cookie n'a pas été créé auparavant.
Re: isset($_COOKIE
Posté : 01 mars 2016, 20:49
par Blaise032
une raison peut être que le cookie n'a pas été créé auparavant.
si, il a été créé : setcookie ("coockie_email", $email);
C'est l'auteur qui a créé ce message
Re: isset($_COOKIE
Posté : 01 mars 2016, 20:56
par @rthur
Bonjour,
setcookie ("coockie_email", $email);
Il y a une faute de frappe dans le nom du cookie.
Si cela ne résout toujours pas ton problème, repars d'une page blanche et ne met dedans que ta fonction de création de cookie puis de lecture et fait ton debug comme cela.
Re: isset($_COOKIE
Posté : 02 mars 2016, 15:08
par Blaise032
J'ai retrouvé mon inscription : Gros Blaise est en fait Blaise032.
J'ai corrigé les fautes et ça ne fonctionne toujours pas.
Repartir d'une page blanche m'est difficile parce que ce n'est pas mon code ...
Re: isset($_COOKIE
Posté : 02 mars 2016, 15:50
par Ryle
Bonjour,
Deux choses importantes sur les cookies avec php, la première est qu'un cookie ne peut pas être utilisé immédiatement. L'utilisateur doit changer de page ou recharger la page afin que le cookie qui vient d'être créé puisse être détecté et lu.
L'autre point est que chez certains hébergeurs, les paramètres facultatifs de la fonction setCookie sont nécessaire. Essayes en spécifiant une date d'expiration, un chemin et un domaine lors de l'appel à la fonction setCookie
http://php.net/manual/fr/function.setcookie.php
Re: isset($_COOKIE
Posté : 02 mars 2016, 17:02
par Blaise032
C'est ce que je fais déjà avec setcookie ('coockie_email', $email, time()+240);
Re: isset($_COOKIE
Posté : 04 mars 2016, 12:00
par Blaise032
Voilà, j'ai créé une page
<?php
$value = 'Valeur de test';
setcookie("TestCookie", $value);
setcookie("TestCookie", $value, time()+240); /* expire dans 240 secondes */
setcookie("TestCookie", $value, time()+240, "/inscription/", "tournairefuge.be", 1);
?>
et une autre de lecture
<?php
// Afficher un cookie
echo $_COOKIE["TestCookie"];
echo $HTTP_COOKIE_VARS["TestCookie"];
// Une autre méthode pour afficher tous les cookies
print_r($_COOKIE);
?>
Tout ce que j'ai comme résultat est « Array ( [PHPSESSID] => egetv324cen15a24to80ovnff7 ) »
Merci
Re: isset($_COOKIE
Posté : 04 mars 2016, 16:18
par @rthur
Ça fonctionne chez moi :
cookie_ecriture.php
<?php
if (setcookie("TestCookie", "Valeur de test")) echo "Cookie envoyé au navigateur du visiteur !<hr />";
?>
<a href="cookie_lecture.php">Voir la valeur des cookies</a>
cookie_lecture.php
<?php
// Afficher un cookie
echo $_COOKIE["TestCookie"];
var_dump($_COOKIE);
Si ça ne fonctionne pas chez toi :
1) vérifie que tu n'as pas un anti-pub ou un antivirus trop chatouilleux
2) essaye avec un autre navigateur
Re: isset($_COOKIE
Posté : 04 mars 2016, 18:40
par Blaise032
Désactivé adblock, l'anti-virus, essayé avec un autre navigateur et d'autre utilisateurs et ça bloque toujours.
Maintenant, c'est un site utilisant WordPress. Ça gène ?
Re: isset($_COOKIE
Posté : 04 mars 2016, 19:41
par @rthur
Tu as créé les 2 pages PHP avec les mêmes noms et contenus que je t'ai indiqué et ça ne marche pas ?
Cookie qui ne fonctionne pas
Posté : 05 mars 2016, 08:59
par Blaise032
Bonjour,
Je reformule une question mal posée
J'ai essayé touts les cas de figure, y compris spécifier durée de vie, répertoire et domaine:
Code : Tout sélectionner
<?php
$value = 'Valeur de test';
setcookie("TestCookie", $value);
setcookie("TestCookie", $value, time()+240); /* expire dans 240 secondes */
setcookie("TestCookie", $value, time()+240, "/inscription/", "tournairefuge.be", 1);
?>
et une page de lecture
Code : Tout sélectionner
<?php
// Afficher un cookie
echo $_COOKIE["TestCookie"];
echo $HTTP_COOKIE_VARS["TestCookie"];
// Une autre méthode pour afficher tous les cookies
print_r($_COOKIE);
?>
Tout ce que j'ai comme résultat est
J'ai mis en œuvre la solution apportée par @rthur
Code : Tout sélectionner
<?php
if (setcookie("TestCookie", "Valeur de test")) echo "Cookie envoyé au navigateur du visiteur !<hr />";
?>
<a href="cookie_lecture.php">Voir la valeur des cookies</a>
et
J'ai changé de navigateur, coupé adblok et mon antivirus et demandé à un autre utilisateur. Vous pouvez d'ailleurs essayer :
http://tournairefuge.be/inscription/test
C'est un site tournant sur WordPress.
Merci
Re: $_COOKIE qui ne fonctionne pas
Posté : 05 mars 2016, 09:58
par @rthur
Tu peux nous donner exactement le code de ta page index.php, directement copié-collé sans rien changer ?
Re: $_COOKIE qui ne fonctionne pas
Posté : 05 mars 2016, 11:23
par Blaise032
Code : Tout sélectionner
<?php
if (setcookie("TestCookie", "Valeur de test")) echo "Cookie envoyé au navigateur du visiteur !<hr />";
?>
<a href="cookie_lecture.php">Voir la valeur des cookies</a>
Re: $_COOKIE qui ne fonctionne pas
Posté : 05 mars 2016, 11:58
par @rthur
Je vois 2 possibilités :
- soit la fonction setcookie() est désactivée sur ton serveur (un phpinfo() devrait pouvoir te le dire)
- soit ton éditeur de code ou ton logiciel FTP est pourri et rajoute des caractères bizarres avant <?php qui bloque la pose du cookie...
Dans les 2 cas, regarde d'abord dans les logs PHP pour voir si il n'y aurait pas un message d'erreur.
Si tu es sur un hébergement mutualisé, demande à ton hébergeur où sont les logs (en général ils sont dans ton espace FTP, ou sinon dans ton espace client)
Si tu es sur un serveur virtuel ou dédié, fais un phpinfo() pour voir où ils sont