[RESOLU] Petit problème avec les cookies

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 : [RESOLU] Petit problème avec les cookies

Re: [RESOLU] Petit problème avec les cookies

par ikkiphenix » 24 déc. 2013, 19:00

Au plaisir et Joyeux Noël !

Re: Petit problème avec les cookies

par magnet » 24 déc. 2013, 18:51

:mrgreen: Décidément j'aurais dû regarder d'un peu plus près la doc' !

En tout cas un grand merci à toi ikkiphenix et à Aureusms pour votre aide !

Joyeux Noël !

Re: Petit problème avec les cookies

par ikkiphenix » 24 déc. 2013, 18:33

Par défaut, dans la fonction setcookie (http://fr.php.net/setcookie), si tu ne précises pas de path, le cookie fonctionne dans le dossier où le cookie est déclaré. Pour qu'il fonctionne dans tout ton site ou domaine, il faut le préciser.

Si je reprends ton code et que j'ajoute un paramètre, ça donne ça :

Code : Tout sélectionner

setcookie('langue', $get_langue, time() + 7*24*3600, '/');

Re: Petit problème avec les cookies

par magnet » 24 déc. 2013, 18:16

Non. La page d'accueil (lecture du cookie) se situe dans le répertoire principal, la page demarrer.php (setcookie()) se situe dans le répertoire site/ .

En revanche, c'est vrai que la lecture du cookie fonctionne par n'importe quel fichier dans le répertoire de la page demarrer.php .

Mais, est-ce que c'est possible de lire $_COOKIE['langue'] dans un autre répertoire que celui de la page de l'enregistrement du cookie ?

Re: Petit problème avec les cookies

par ikkiphenix » 24 déc. 2013, 17:35

Est-ce que les deux scripts PHP, celui pour lequel le cookie fonctionne et celui pour lequel le cookie ne fonctionne pas, sont dans le même dossier ?

Re: Petit problème avec les cookies

par magnet » 24 déc. 2013, 15:00

Il y a du nouveau !

Lorsque le cookie est appelé sur la même page que setcookie(), il fonctionne et me renvoie sa valeur.

Le problème réside dans le fait qu'il est impossible pour l'instant d'appeler $_COOKIE['langue'] sur une autre page que celle de son enregistrement.

Serait-ce une question de sécurité ?

Re: Petit problème avec les cookies

par magnet » 24 déc. 2013, 01:15

Bonjour et merci pour vos réponses ! :D

A la lecture du cookie, ce dernier est considéré comme "inexistant", il n'y a donc pas d'erreur.

Par contre pour le code optimisé, PHP me renvoie une erreur de syntaxe :

Parse error: syntax error, unexpected ';' on line 2

Mais l'ancien code fonctionnait également chez moi, le problème venait tout simplement de la lecture du cookie comme si on appelait une variable qui n'existait pas, et donc ce qui ne renvoyait pas d'erreur, sur la page d'accueil.

Re: Petit problème avec les cookies

par Aureusms » 23 déc. 2013, 22:12

Bonjour, moi aussi cela fonctionne.
Bon déjà pour commencer, un petite modification de code. La première ligne fait exactement ce que tu recherches mais, en plus, cela vérifie si $_GET['lang'] existe, si la variable est vide ou pas et si elle est égale à 'fr' ou 'en'. Dans un des cas contraire, 'fr' lui est attribué. Le tout en une ligne... cool non ?
J'ai préféré faire comme cela car ton code précédent vérifiait si la variable $_GET['lang'] existait mais ne vérifié pas si elle était vide ou pas.

Pour la seconde et troisième ligne, je vérifie que setcookie ne retourne pas FALSE ie. que le cookie est bien parti.
J'ai modifié time()+... par strtotime("+1 week",time()) qui reviens à la même chose mais c'est plus parlant ainsi.

<
?php
$get_langue = (!empty($_GET['lang']) && in_array($_GET['lang'], array('en','fr'))) ? $_GET['lang'] : 'fr';
if (!setcookie('langue', $get_langue, strtotime("+1 week",time())))
  echo 'cookie pas envoyé';
?>
Qu'est ce que cela donne ?

Re: Petit problème avec les cookies

par ikkiphenix » 23 déc. 2013, 19:14

Salut,

Le code fonctionne chez moi.

Qu'est-ce qui te fait dire qu'il ne fonctionne pas ? Tu as un message d'erreur ? Y'a-t-il d'autres lignes de codes autour de celui que tu nous as présenté ?

Petit problème avec les cookies

par magnet » 23 déc. 2013, 16:51

Bonjour ! :D

J'ai décidé d'installer ma propre traduction sur mon site web qui récupérait la langue du navigateur de l'invité sur ma page de démarrage (après la page d'accueil) avec $_SESSION.
Ça avait l'air de bien marcher mais j'ai finalement remplacé par $_COOKIE, c'est plus pratique.

Mais voilà, impossible de lire $_COOKIE["langue"] sur la page d'accueil (d'ailleurs n'importe quelle page), PHP ne reconnaît absolument pas ce cookie.
Voici la capture, on remarque bien que le cookie est correctement enregistré et dispose d'une valeur :

Image

La page de démarrage ( enregistrement du cookie):
	if(isset($_GET['lang'])){

	    $get_langue = $_GET['lang']; //$_GET["langue"] est connue et a soit pour valeur "en" ou "fr"
	}else{

	    $get_langue = 'fr'; //On donne une valeur si $_GET["langue"]= null
	}

	setcookie('langue', $get_langue, time() + 7*24*3600);
La page d'accueil (lecture du cookie s'il existe):
		if(isset($_COOKIE["langue"])) //Renvoi à l'autre page si les informations de langue sont enregistrées
	{
		header('Location: site/demarrer.php?lang='. $_COOKIE["langue"]);
	}
Quelle serait l'erreur ?

Je sais, je débute vraiment mais ça fait plusieurs semaines que ça me turlupine l'esprit ! :mrgreen:

Merci ! :D