kislathanak
Messages postés10Date d'inscriptionmercredi 11 juillet 2007StatutMembreDernière intervention22 mars 2009
-
8 oct. 2007 à 15:08
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDerniè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 :
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 ?
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 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.
mondrone
Messages postés246Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention11 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.
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 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/.
Vous n’avez pas trouvé la réponse que vous recherchez ?
kislathanak
Messages postés10Date d'inscriptionmercredi 11 juillet 2007StatutMembreDernière intervention22 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.
kislathanak
Messages postés10Date d'inscriptionmercredi 11 juillet 2007StatutMembreDernière intervention22 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).
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 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.
mondrone
Messages postés246Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention11 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) !
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 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.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 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.
mondrone
Messages postés246Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention11 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 !
mondrone
Messages postés246Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention11 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" !