Vérifier si une PHP cookie existe et si cela n'est pas sa valeur
Je suis en train de travailler sur un site multilingue, donc j'ai essayé cette approche:
echo $_COOKIE["lg"];
if (!isset($_COOKIE["lg"]))
setcookie("lg", "ro");
echo $_COOKIE["lg"];
L'idée est que si le client ne dispose pas d'une lg
cookie (il est, par conséquent, la première fois qu'ils ont visité ce site), puis de définir un cookie lg = ro
pour cet utilisateur.
Tout fonctionne bien sauf que si je saisis cette page pour la première fois, la première et la deuxième echo
retour rien. Seulement si j'actualise la page est le témoin set, puis les deux echo
imprimer le "ro" chaîne je suis dans l'attente.
Comment puis-je régler ce cookie afin de voir sa valeur à partir de la deuxième echo
sur la première visite/de chargement de la page de l'utilisateur? Devrait être, sans avoir besoin de rafraîchir la page ou créer une redirection.
Vous devez vous connecter pour publier un commentaire.
Réponse
Vous ne pouvez pas selon la Manuel PHP:
C'est parce que des cookies sont envoyés en-têtes de réponse pour le navigateur et que le navigateur puis de les envoyer avec la requête suivante. C'est pourquoi ils ne sont disponibles que sur la deuxième page de la charge.
Contourner
Mais vous pouvez contourner le problème en également la mise en
$_COOKIE
lorsque vous appelezsetcookie()
:$_COOKIE[]
valeur. Cela peut amener quelque autre morceau de code plus tard que l'utilisateur n'ai à ce cookie. Alternative serait$lg = (isset($_COOKIE['lg']) ? $_COOKIE['lg'] : 'ro'; echo $lg;
Les Cookies sont seulement envoyé au moment de la demande, et par conséquent ne peuvent pas être récupérés dès qu'il est affecté (disponible uniquement après le rechargement).
Source