Je passe par quelques PHP tutoriels sur la façon de paramétrer les cookies. J'ai remarqué que les cookies sont correctement définis sur FF4 et IE9, mais ils ne sont pas définis dans Chrome (11.0.696.60). Le fichier PHP a été servi à partir de XAMPP (localhost).
J'ai essayé l'exemple de w3schools:
<?php
setcookie("user", "Alex Porter", time()+3600);
?>
Et depuis ce site (pour les environnements locaux):
<?php
setcookie("username", "George", false, "/", false);
?>
Merci d'avance.
La désactivation des cookies pour les adresses IP et localhost
était une décision de conception. Voir aussi: https://code.google.com/p/chromium/issues/detail?id=56211
Les moyens de contourner le problème sont les suivants:
/etc/hosts
utiliser 127.0.0.1 localhost.com
).Par exemple, dans PHP :
setcookie(
$AUTH_COOKIE_NAME,
$cookie_value,
time() + cookie_expiration(),
$BASE_DIRECTORY,
null,
false,
true
);
Ici, la valeur null
indique que le domaine ne doit pas être défini.
Remarque: le fait de ne pas définir le domaine empêche le cookie d'être visible pour les sous-domaines.
Le domaine doit être égal à NULL.
& Doit recevoir une date d'expiration. c'est à dire.,
setcookie("username", "George", time() + (20 * 365 * 24 * 60 * 60), "/", NULL);
Il semble que cela puisse être un bogue avec la fonctionnalité "Developer Tools" de Chrome. Pendant tout ce temps, j'essayais de définir un cookie (mais pas de le récupérer) et cela a fonctionné avec l'autre navigateur. Cela a fonctionné, en supposant que vous faites confiance à la section d'affichage des cookies de FF ou localisez le fichier du cookie pour IE. Dans Chrome je comptais sur la section "Cookies" des "Outils développeurs" (Outils développeurs> Ressources> Cookies).
J'ai décidé d'aller plus loin et de produire la valeur du cookie en utilisant ce script trouvé dans WHT ( publié par Natcoweb ):
<?php
setcookie('test', 'This is a test', time() + 3600);
if(isset($_COOKIE['test'])){
$cookieSet = 'The cookie is ' . $_COOKIE['test'];
} else {
$cookieSet = 'No cookie has been set';
}
?>
<html>
<head><title>cookie</title></head>
<body>
<?php
echo $cookieSet;
?>
</body>
</html>
Et cela a fonctionné sur tous les navigateurs, y compris Chrome (je reçois: "Le cookie est ceci est un test")! Cependant, l'inspecteur des cookies de Chrome continue de montrer "Ce site n'a pas de cookies". J'ai également réussi à trouver la liste des cookies stockés dans les paramètres de Chrome (Options> Sous le capot> Paramètres de contenu> Tous les cookies et les données du site) et enfin trouvé le cookie (plus d'étapes à vérifier mais au moins plus précis que les outils de développement)!
Conclusion: les cookies étaient définis, mais les outils de développement de Chrome ne peuvent pas le voir pour une raison quelconque.
Avez-vous vérifié la date de votre système? $ date Et si elle est ancienne, vous devez changer votre heure $ date -s 2007.04.08-22: 46 + 0000
J'espère que ça aide. J'ai eu le même problème et ça a marché
J'ai rencontré le même problème lorsque j'ai essayé comme ci-dessous
setcookie("gb_role",base64_encode($_SESSION["role"]),time()+60*60*24*30);
quand je l'ai changé en dessous
setcookie("gb_role",base64_encode($_SESSION["role"]),time()+2592000);
Je viens de bien travailler, la différence est au lieu de time () + 60 * 60 * 24 * 30 je viens de faire time () + un travail de valeur numérique. Je sais que cela n'a pas de sens mais cela a fonctionné.
Ce code fonctionne pour moi dans IE, Chrome et FF
if($_COOKIE['language']==NULL || empty($_COOKIE['language']))
{
$dirname = rtrim(dirname($_SERVER['PHP_SELF']), '/').'/';
$expire=time()+31536000;
setcookie("language", "English",$expire,"$dirname","mydomain.com",false,false);
}