Importation d'une variable par cookie

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Importation d'une variable par cookie

Re: Importation d'une variable par cookie

par Ryle » 14 nov. 2011, 23:02

Le 3eme paramètre de la fonction setcookie permet de définir quand le cookie doit expirer. Cependant, il ne s'agit pas d'un délai en seconde, mais d'une date précise (calculée à partir du premier janvier 70)

En gros, avec 3600, tu dis as php que le cookie expire le 1er janvier 1970 à 1h du matin ;)

Il faut utiliser time() pour connaitre le nombre de seconde passé depuis 70. Et donc time()+3600 permet de spécifier que le cookie expire dans 1h à compter de maintenant :)

Importation d'une variable par cookie

par jrmy7 » 14 nov. 2011, 10:59

Bonjour à tous !

Comme vous le devinerez je débute en PHP.
C'est la deuxième fois que je pose cette question, la première publication m'a permis de comprendre beaucoup de chose mais pas à résoudre mon problème que je vais tenter de vous présenter le plus clairement possible.

Je suis entrain de réaliser un site en 3 langues différentes (en, fr, nl)... il y a donc un script de détection de la langue qui redirige vers
index_en.php
ou index_fr.php
ou index_nl.php.

Tout le texte de mon site se trouve dans un fichier externe en 3 langues :
m_lang_en_inc.php,
m_lang_fr_inc.php,
m_lang_nl_inc.php.

(fichier inclus directement dans l'une des 3 version "index").
Par exemple : m_lang_en_inc.php est inclus directement dans index_en.php

Jusque là tout fonctionne.

Maintenant mon problème :

Un menu "drapeau" est inclus dans chaque page (lui aussi en fichier externe).
Quand on clique sur l'un des drapeau, on retourne sur la page "home" de mon site dans la version correspondant au drapeau (fr, nl, ou en)

Dans cette dernière page ("home" en français par exemple) mon code commence (première ligne de script) par :
<?php
setcookie('ch_langue', '', time() - 3600); //destruction de l'ancien cookie (s'il y en a eut un)
$langue = 'fr'; //attribution de la valeur "fr" à la variable "langue"
setcookie('ch_langue', $langue, 3600); // création d'un cookie "ch_langue"
?>
C'est donc la variable "langue" avec la valeur "fr" que je veux envoyer à la page suivante.

Quand on clique sur un lien se trouvant sur la page "home".
Ce lien envoie sur la page suivante qui doit récupérer cette variable.

Le code sur la page suivante qui est chargé de récupérer la variable :
<?php
if ( isset($_COOKIE['ch_langue'])) {
$langue = $_COOKIE['ch_langue'];
}
else {
$langue = 'en';
}
?>
Donc mon code récupère la variable "ch_langue" avec comme valeur "fr" et sinon il utilise la valeur "en".

Et le problème c'est qu'il utilise TOUJOURS la valeur "en" car il ne reçoit pas la valeur "fr".

J'espère avoir été assé clair.

Encore merci à ceux qui pourront me donner un coup de pouce. :wink: