le var_dump rend quoi ?
Je me suis basé sur le premier code que tu nous as fourni.Envoyé par laurentSc
Sinon, vide les cookies déjà placés par le navigateur et ensuite execute à nouveau le script pour voir.
Je n'avais pas fait de var_dump vu que j'avais regardé sous FF, mais là, je l'ai rajouté et le résultat est différent d'avec FF :Les 2 premiers sont aussi signalés par FF, les 2 suivants sont en italien (mais ils sont vides) : il faut savoir que je travaille avec un italien (qui baragouine le français) et que mon site est placé au même endroit que le sien, donc ces cookies n'ont peut-être pas été "settés" par mon site. Et d'ailleurs, le mien (connecte) qui était signalé par FF ne l'est pas ici.var_dump=array(5) { ["__utma"]=> string(54) "26646200.1233947815.1310034954.1310075466.1310166983.4" ["__utmz"]=> string(69) "26646200.1310034954.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)" ["telepatia"]=> string(0) "" ["annotazioni"]=> string(0) "" ["PHPSESSID"]=> string(32) "f3a763ca56dba97dadcfcfb8d6fe2d63" }
Après avoir vidé le cache, il y a beaucoup moins de cookies, mais toujours pas le mien : var_dump :var_dump=array(1) { ["PHPSESSID"]=> string(32) "f3a763ca56dba97dadcfcfb8d6fe2d63" }
de tout façon c'est simple fait :
page 1 :
si tu rafraichies la page 'connecte' doit y être
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 setcookie('connecte', '1'); var_dump($_COOKIE);
page 2 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part var_dump($_COOKIE);
et surprime bien tes cookies avant de faire tes tests
Oui, j'ai fait ça et sur la page de connexion (page 1), quand je rafraichis, "connecte" y est bien, mais pas sur page 2...
Je teste avec IE, pas FF, donc y a pas d'onglets , mais j'ouvre la nouvelle page dans la même fenêtre que la page précédente.t'ouvre bien la page dans un autre onglet
L'organisation est la suivante :ton autre page est dans le même dossier ?
repertoire
- action_connexion/index.php (ou la page 1)
- annonce1/index.php (ou la page 2)
voila, encore une fois t'as pas lus la doc
http://php.net/manual/fr/function.setcookie.php
(paramètre path )
Bien joué Stealth35
Il faut donc ajouter l'argument path dans la fonction setcookie()
Edit :Le chemin sur le serveur sur lequel le cookie sera disponible. Si la valeur est '/', le cookie sera disponible sur l'ensemble du domaine domain. Si la valeur est '/foo/', le cookie sera uniquement disponible dans le répertoire /foo/ ainsi que tous ses sous-répertoires comme /foo/bar/ dans le domaine domain. La valeur par défaut est le répertoire courant où le cookie a été défini.
Et plus rapide aussi
Génial, mais en plus du paramètre "path", il y a aussi le paramètre "domain" ; donc : setcookie("connecte","1",time()+60*60*24*365,'/','.nom_domaine');
Merci beaucoup
Je ne m'en étais pas rendu compte car la première fois que j'avais fait des cookies, tous les fichiers étaient dans le même répertoire donc cela n'était pas nécessaire.
Nouveau souci avec le cookie : quand je me connecte, je le positionne :
(iframe car il y a en amont des affichages)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ... ?> <iframe src="cookie.php" frameborder=0></iframe> <?php ...
et cookie.php :
puis dans une autre page où je le teste :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <?php setcookie("connecte","1",time()+60*60*24*365,'/','.nom_domaine); ?>
c'est négatif. Qu'est-ce qui ne va pas ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (isset($_COOKIE["connecte"]))...
te lance pas dans les iframe c'est un très mauvaise méthode
En effet, je n'étais pas tellement confiant, mais vu qu'il y a des affichages en amont dans ma page, je ne peux pas faire un setcookie ; comment puis-je m'y prendre ?
fait le avant l'affichage, rien ne t’empêches de le faire
Au pire, il y a les fonctions de bufferisation de sortie.
Exemple de bufferisation de sortie
Réponse arrivée trop tard, car, suite à celle de stealth35, j'ai entrepris de modifier ma page pour faire tous les contrôles nécessaires suivi du setcookie avant les affichages, mais c'est bon à savoir car si je l'avais su avant, ça aurait été plus simple, mais là, j'avais commencé à modifier ma page et pas mémorisé la précédente...
si tu veux avancé je te conseil de lire (surtout de comprendre) ça :
http://symfony.com/doc/current/book/..._symfony2.html
prend le plus comme un exemple
Merci pour le lien (heureusement que même si non bilingue, je me débrouille en anglais ; d'ailleurs, les sites que je développe pour le boulot sont tous en anglais).
Et Symphony, je l'avais mis de côté (comme Zend), ayant décidé d'apprendre d'abord la POO (car j'avais trouvé un tuto sur Zend qui commençait par PDO, donc de la POO...)
Ayant de nouveau un setcookie à faire sur une autre page, j'ai utilisé avec succès les fonctions de bufférisation, car là, il y avait encore plus d'echo que sur l'autre page et un formulaire html avec des affichages (au moins l'affichage du nom des champs).
Y avait peut-être moyen de s'en sortir en exportant l'action dans un fichier séparé ; ce qui n'est pas le cas :(et de mémoriser le texte à afficher pour le faire plus tard) mais là, il a suffit de mettre un ob_start() en début de code et un ob_end_flush() à la fin et le tour était joué. Donc, super ce truc.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <form method="post" action="<?=$_SERVER["PHP_SELF"]?>">
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager