Je travaille sur un site multilingue et j'ai donc 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 possède pas de cookie lg
(c'est donc la première fois qu'il visite ce site), il crée un cookie lg = ro
pour cet utilisateur.
Tout fonctionne bien sauf que si j'entre dans cette page pour la première fois, les première et deuxième echo
ne renvoient rien. Seulement si j'actualise la page, le cookie est défini, puis les deux echo
impriment la chaîne "ro" que j'attends.
Comment définir ce cookie afin de voir sa valeur à partir de la deuxième echo
lors de la première visite/du chargement de la page de l'utilisateur? Devrait être sans avoir besoin d'actualiser la page ou de créer une redirection.
Vous ne pouvez pas selon le manuel PHP :
Une fois les cookies configurés, vous pourrez y accéder lors du prochain chargement de page avec les tableaux $ _COOKIE ou $ HTTP_COOKIE_VARS.
En effet, les cookies sont envoyés dans les en-têtes de réponse au navigateur, qui doit ensuite les renvoyer avec la demande suivante. C'est pourquoi ils ne sont disponibles que lors du chargement de la deuxième page.
Mais vous pouvez contourner ce problème en définissant également $_COOKIE
Lorsque vous appelez setcookie()
:
if(!isset($_COOKIE['lg'])) {
setcookie('lg', 'ro');
$_COOKIE['lg'] = 'ro';
}
echo $_COOKIE['lg'];
Les cookies sont seulement envoyés au moment de la demande et ne peuvent donc pas être récupérés dès qu'ils ont été attribués (uniquement disponibles après le rechargement).
Une fois que les cookies ont été configurés, ils peuvent être consultés lors du chargement de la page suivante avec les tableaux $ _COOKIE ou $ HTTP_COOKIE_VARS.
Si la sortie existe avant d'appeler cette fonction, setcookie () échouera et retournera FALSE. Si setcookie () s'exécute avec succès, il retournera VRAI. Ceci fait pas indique si l'utilisateur a accepté le cookie.
Les cookies ne deviendront visibles qu'au prochain chargement d'une page pour laquelle le cookie sera visible. Pour vérifier si un cookie a été défini avec succès, recherchez le cookie sur une page de chargement suivante avant son expiration. Le délai d'expiration est défini via le paramètre Expire. Un bon moyen de corriger l'existence de cookies consiste simplement à appeler print_r ($ _ COOKIE) ;.