Cookie

Résolu
kislathanak Messages postés 10 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 22 mars 2009 - 8 oct. 2007 à 15:08
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 8 oct. 2007 à 20:02
Bonjour à tous ! J'ai un petit problème concernant une création de
cookie : j'utilise la fonction PHP include pour insérer ce bout de code
en début de chaque page de mon site :

<?php
if (isset($_COOKIE['connecte']))
{
$moment=time()+5*60;
setcookie('connecte','oui',$moment);
}
else
{
(...)
$moment=time()+5*60;
setcookie('connecte','oui',$moment);
(...)
}
?>

J'ai retiré les appels SQL, mais j'ai testé sans et ils ne posent aucun
pb. Mais le cookie ne veut pas se créer ! Je précise que, sous WAMP, ça
marche, sur le compte Free de mon frère, ça marche ; mais pas sous le
mien. Au passage, le script passe bien sur les setcookie, j'ai posé des
echos qui en témoignent.
La seule chose que j'ai envisagé, c'est le fait que mon compte possède
un point dans l'URL, au lieu d'un tiret ou d'un underscore :
david.grimarne.free.fr ; mais dans ce cas, pourquoi est-ce que le second
cookie du site passe correctement ?

16 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
8 oct. 2007 à 20:02
Ben là c'est logique, ton print_r est placé dans la même page.
D'ailleurs, tu n'es pas en error_reporting(E_ALL) sauf erreur de ma part...
Teste dans de bonnes conditions : efface tous tes cookies, place ton print_r() sur une page suivant la page où tu crées ton cookie. Je suis certain que cela va fonctionner. Je pense que tu as voulu les voir trop vite :
tu fais ton premier. Le cookie est créé, et tu tentes de l'afficher dans la même page. Rien. Normal. Puis tu fais un deuxième cookie ailleurs. Ta variable est déjà ($_COOKIE) et tu dois te'n servir plus loins et ça fonctionne. Je suis presque sûr que si tu fais ton print_r() sur une autre page, tu auras ton 1er cookie.
Je remonterai le pb du mail.
3
dmk04 Messages postés 206 Date d'inscription samedi 29 octobre 2005 Statut Membre Dernière intervention 7 mars 2012
8 oct. 2007 à 16:18
Salut,

Essaye $HTTP_COOKIE_VARS['connecte'] au lieu de $_COOKIE['connecte']
0
mondrone Messages postés 246 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 11 mars 2012
8 oct. 2007 à 16:34
Je me permet d'intervenir du fait que je connais le problème (c'est moi le frère lol).
Même dans le cas ou ce serait un problème avec $_COOKIE qui ne marcherait pas bien, l'un des deux set_cookie est automatiquement effectué (et d'ailleurs renvoi TRUE pour information, le test a été effectué), mais malgrès le renvoi de "pas d'erreur", le cookie n'est pas créé. Sachant que en changeant de domaine, ca passe, je ne pense pas que le problème soit lié au naviguateur.

<hr size="2" width="100%" />  Qui ne tente rien...

  Ne risque pas d'avoir grand chose !!!

<hr siz="" />
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
8 oct. 2007 à 16:55
en fait, vous dites que le premier setcookie n'est pas executé alors que le deuxieme si ?

Si c'est le cas, cela veut dire que php entre dans le "else" de la condition.
Non ?

Pour DMK04 : $HTTP_COOKIE_VARS, et aussi utiliser php 2 ? ;)
Ca fait tres tres longtemps que $HTTP_COOKIE_VARS n'est plus utilisé ! Mieux vaut garder $_COOKIE

Autre possibilité : Le cookie ne s'applique qu'au domaine ou il est crée. Si vous créez un cookie dans www.site.fr/rep1/cookie.php et que vous tentez de le lire sur www.site.fr/readcookie.php, ca ne marchera pas, car le cookie sera appliqué que sur le domaine rep1/.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
8 oct. 2007 à 16:56
pourquoi il me prends pas les saut de ligne celui-la ?!!
0
kislathanak Messages postés 10 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 22 mars 2009
8 oct. 2007 à 17:16
Désolé, je me suis mal exprimé : en fait, quand je parlais de second cookie, je faisais référence à un autre cookie sur mon site, qui lui, marche correctement. La fonction que je vous ai indiqué ne touche qu'à un seul et même cookie : le cookie "connecte". C'est donc bel et bien un pb au niveau de la fonction setcookie : elle a beau dire qu'elle arrive à créer, elle ne le fait pas pour autant !
En ce qui concerne le domaine où le cookie est créé, le pb ne vient pas de là. On a fait attention à ça en faisant les différents tests.
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
8 oct. 2007 à 17:35
et si tu le met hors de ta condition ca fait quoi ? genre tu met QUE le setcookie (voir si c'est pas kkchose qui viendrait foutre la merde avant)
0
kislathanak Messages postés 10 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 22 mars 2009
8 oct. 2007 à 18:07
Non, c'est l'instruction setcookie qui foire. Ca, on en est sûrs ! Les tests nous l'ont montré (on a notamment placé des echos dans le if et le else, pour voir les réactions dans le code HTML).
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
8 oct. 2007 à 18:35
Hello,

tu travailles en error_reporting(E_ALL);?
Et quand tu testes, teste bien ton bin's:

if (false === setcookie('connecte', 'oui', $moment)) {
    throw new Exception('Création échouée');
}
Et siu tu n'entres pas là-dedans, alors fais, à la fin de ton if .... else :
print_r($_COOKIE);
Tu auras plus de visibilité sur ce qu'il se passe.
0
mondrone Messages postés 246 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 11 mars 2012
8 oct. 2007 à 18:36
Sachant encore une fois que elle ne foire que sur ce cookie là (d'autant moins compréhensible)

<hr size="2" width="100%" />  Qui ne tente rien...

  Ne risque pas d'avoir grand chose !!!

<hr siz="" />
0
mondrone Messages postés 246 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 11 mars 2012
8 oct. 2007 à 18:38
En fait, a priori (faudrait effectivement essayer) le throw new Exception ne devrait pas réagir du fait que le setcookie (testé ca par contre) renvoie bien TRUE (mais le cookie ne se créé par pour autant) !

<hr size="2" width="100%" />  Qui ne tente rien...

  Ne risque pas d'avoir grand chose !!!

<hr siz="" />
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
8 oct. 2007 à 18:39
Justement.
Ca ne vient donc pas de setcookie() mais d'un truc qui l'emmerde sur ton code. D'où l'importance de tester ça le plus correctement possible : error_reporting à E_ALL pour que TOUTES les erreurs s'affichent, et un test réel sur la fonction avec false === setcookie(...) pour être sûr de ce qu'elle renvoie.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
8 oct. 2007 à 18:41
Dis, le cookie, tu essayes d'y accéder sur une autre page ou après raffraichissement de ta page hein ? :-) Le print_r tu le fais APRES hein, après raffraichissement ou sur la page suivante.
0
mondrone Messages postés 246 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 11 mars 2012
8 oct. 2007 à 18:43
Alors dans ce cas, l'explication sachant que ca marche sur mon propre FTP free (ils sont tous deux configurés de la même manière a moins que la config par défaut de free ai changé...) Mais on va vérifier quand même !

Au passage, vu que t'es admin ! J'ai demandé a ne pas etre averti par mail mais je le suis quand même !

<hr size="2" width="100%" />  Qui ne tente rien...

  Ne risque pas d'avoir grand chose !!!

<hr siz="" />
0
kislathanak Messages postés 10 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 22 mars 2009
8 oct. 2007 à 19:28
malalam, j'ai testé le code suivant :

if (setcookie('connecte','oui',$moment))
  {
   echo 'AAAAAAA';
   print_r($_COOKIE['connecte']);
   echo 'BBBBB';
  }

Il a renvoyé "AAAAAAABBBBB".

En local également. Donc, c'est peut-être normal. Par contre, le throw exception ne marche pas, parce que free est en PHP 4 (sauf erreur).
0
mondrone Messages postés 246 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 11 mars 2012
8 oct. 2007 à 19:39
Pour précision tout de même, après test en local chez moi, le print_r renvoi effectivement une valeur après rafraichissement de la page (en fait logique puisque le naviguateur n'as pu déjà le créer, étant dans la phase de l'évaluation du programme php par le serveur).

Et d'ailleurs, le test sur le serveur de Free cité ci-dessus a été fait dans de mauvaises conditions puisque le print_r est placé (si je ne m'abuse, a revérifier) dans la partie sous la condition "pas encore de cookie" !

<hr size="2" width="100%" />  Qui ne tente rien...

  Ne risque pas d'avoir grand chose !!!

<hr siz="" />
0
Rejoignez-nous