2012-01-17 11 views
0

J'ai des problèmes avec la configuration des cookies. Le problème est que mes cookies ne sont même pas réglés, j'ai mis en place un test ci-dessous pour voir s'ils sont en train d'être configurés mais ils ne sont jamais configurés. J'ai même vérifié dans mon navigateur pour voir si quelque chose est en train d'être défini, mais rien de mon site.PHP Les cookies ne sont pas configurés

Je voudrais que vous m'aidiez à configurer mes cookies. Je ne suis pas très sûr de ce qu'il faut faire. Je vous remercie.

Voici mon code:

<?php 
session_start(); 

setcookie("ridArray","", time()+3600); 

if (isset($_COOKIE['ridArray'])) { 
    echo "ridArray is set.";  
} 
?> 
<head> 
</head> 
<html> 
<body> 
<?php 
if (isset($_COOKIE['ridArray'])) { 
    echo "ridArray is set.";  
} else { echo "not set"; } 
?> 
</body> 
</html> 
+2

Avez-vous essayé de rafraîchir la page? Le cookie ne sera pas disponible dans '$ _COOKIE' dans la même requête que celle en cours. – deceze

+4

Vous ne pouvez pas définir un cookie avec une valeur vide. Cocher cette http://stackoverflow.com/questions/8775572/setcookie-to-an-empty-value-not-working – WordsWorth

+0

Oui, je l'ai essayé:/ – tushar747

Répondre

4

Voilà le problème, de la documentation SetCookie:

Les cookies doivent être supprimés avec les mêmes paramètres tels qu'ils ont été définis avec. Si l'argument value est une chaîne vide, ou FALSE, et que tous les autres arguments correspondent à un appel précédent à setcookie, alors le cookie avec le nom spécifié sera supprimé du client distant. Ceci est réalisé en interne en définissant la valeur sur 'supprimé' et le délai d'expiration sur une année passée.

Vous définissez la valeur du cookie sur une chaîne vide (""). Essayez:

setcookie("ridArray","not blank value", time()+3600); 

L'autre problème est que lorsque vous définissez un cookie, il ne sera pas dans les en-têtes de demande (accessible via _COOKIE $) jusqu'à la prochaine chargement de la page. Cela signifie que lorsque vous chargez cette page la première fois, $ _COOKIE ['ridArray'] ne sera PAS défini. Lors des chargements suivants, il sera réglé et il sera réinitialisé à chaque fois.

Première page de chargement, elle ne sera pas définie. Actualiser, et il sera défini. Le moyen le plus simple de déboguer les cookies consiste à utiliser des outils de développement de Chrome ou FireBug de Firefox, à regarder les en-têtes de réponse de l'en-tête SetCookie et les en-têtes des requêtes pour voir les cookies envoyés par votre navigateur.

0
$myvar = "test"; 
if (!isset($_COOKIE['lng'])) { setcookie("lng",$myvar); $_COOKIE['lng'] = $myvar; } 
Questions connexes