Promblème avec les cookies
Fermé
Lili_754
Messages postés
125
Date d'inscription
mercredi 18 avril 2012
Statut
Membre
Dernière intervention
31 mai 2016
-
2 mars 2013 à 18:01
tryan44 Messages postés 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 - 5 mars 2013 à 12:46
tryan44 Messages postés 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 - 5 mars 2013 à 12:46
A voir également:
- Promblème avec les cookies
- Supprimer les cookies - Guide
- Anti cookies - Télécharger - Confidentialité
- La cause de ce problème peut être la désactivation ou le refus des cookies ✓ - Forum Mozilla Firefox
- Extension refuser cookies - Guide
- Ou sont stockés les cookies - Forum Windows 10
3 réponses
tryan44
Messages postés
1288
Date d'inscription
mardi 24 janvier 2012
Statut
Membre
Dernière intervention
26 octobre 2014
219
2 mars 2013 à 22:14
2 mars 2013 à 22:14
Salut,
Un truc comme ça ? :
Un truc comme ça ? :
<?php //Variable POST du formulaire $nom = (isset($_POST['nom'])) ? $_POST['nom'] : NULL; $valeur = (isset($_POST['valeur'])) ? $_POST['valeur'] : NULL; //si le cookie $_COOKIE['Oublier'] existe et qu'il correspond if(isset($_COOKIE['Oublier']) && $_COOKIE['Oublier'] == "efface"){ //on supprime tout les cookies setcookie('nom', '', 0); setcookie('valeur', '', 0); setcookie('Oublier', '', 0); //on redirige pour que ce soit pris en compte echo '<script type="text/javascript"> window.setTimeout("location=(\''.$_SERVER["PHP_SELF"].'\');",1000) </script>'; } //si $_POST['Oublier'] if(isset($_POST['Oublier'])){ //si le cookie existe et égal if(isset($_COOKIE['nom']) && $_COOKIE['nom'] == $nom){ echo 'Merci de ne plus utiliser le cookie '.$_COOKIE['nom'].'! <script type="text/javascript"> window.setTimeout("location=(\''.$_SERVER["PHP_SELF"].'\');",3000) </script>'; //création d'un cookie permettant d'effacer le nom setcookie("Oublier", "efface"); } else{ echo 'Le Nom est déjà vide!'; } } //si $_POST['Memoriser'] if(isset($_POST['Memoriser'])){ if($nom != NULL && $valeur != NULL){ //on créer 2 cookies setcookie("nom", $nom); setcookie("valeur", $valeur); ////on redirige pour que ce soit pris en compte echo '<script type="text/javascript"> window.setTimeout("location=(\''.$_SERVER["PHP_SELF"].'\');",1000) </script>'; } else{ echo 'Le Nom ou la Valeur est vide!'; } } //si $_POST['Montrer'] if(isset($_POST['Montrer'])){ //on affiche la valeur des cookies if(isset($_COOKIE['nom'])) echo 'Nom : '.$_COOKIE['nom'].'<br/>'; else echo 'Le nom est vide!<br/>'; if(isset($_COOKIE['valeur'])) echo 'Valeur : '.$_COOKIE['valeur']; else echo 'La valeur est vide!'; } ?> <form method="POST" action="<?php echo $_SERVER["PHP_SELF"]; ?>"> <label for="nom">Nom : </label> <input type="text" name="nom" value="<?php if(isset($_COOKIE['nom'])) echo $_COOKIE['nom'];?>" /> <br/> <label for="valeur">Valeur : </label> <input type="text" name="valeur" value="<?php if(isset($_COOKIE['valeur'])) echo $_COOKIE['valeur'];?>" /><br/> <label for="action">Rappel : </label> <input type="submit" name="Oublier" value="Oublier" /> <input type="submit" name="Memoriser" value="Memoriser" /> <input type="submit" name="Montrer" value="Montrer" /> </form>
tryan44
Messages postés
1288
Date d'inscription
mardi 24 janvier 2012
Statut
Membre
Dernière intervention
26 octobre 2014
219
Modifié par tryan44 le 4/03/2013 à 19:57
Modifié par tryan44 le 4/03/2013 à 19:57
$nom = (isset($_POST['nom'])) ? $_POST['nom'] : NULL;
Correspond à :
<?php if(isset($_POST['nom'])){ $nom = $_POST['nom']; } else{ $nom = NULL; } ?>
Le code plus haut exécute différentes conditions selon le bouton utilisé et effectue des redirections en Javascript. Dans le doute d'avoir des erreurs de "header" si la redirection se fait en PHP, j'ai opté pour du JS.
Oublier : le serveur doit alors demander au client de ne plus utiliser le cookie de nom indiqué dans le formulaire et affiche de nouveau le formulaire ;
En gros, le cookie utilisé pour le nom et si il existe doit être supprimé avant de ré afficher le formulaire. Seul la valeur doit être conservé.
Mémoriser : le serveur doit alors demander au client de mémoriser le cookie de nom et valeur indiqués dans le formulaire et affiche de nouveau le formulaire ;
En gros, les 2 cookies doivent être créés et le formulaire doit être actualisé pour afficher la valeur des 2 cokies dans celui-ci.
Montrer : le serveur doit alors afficher la valeur du cookie nommé nom reçu par le navigateur en même temps que le formulaire.
En gros, on affiche la valeur du cookie comportant le nom si il existe. Dans le cas présent, j'ai affiché la valeur des 2 cookies dans et en dehors du formulaire.
Une question stupide engendre une réponse stupide!
Une question mal formulé engendre une réponse aléatoire!
Lili_754
Messages postés
125
Date d'inscription
mercredi 18 avril 2012
Statut
Membre
Dernière intervention
31 mai 2016
2
4 mars 2013 à 21:18
4 mars 2013 à 21:18
Merciiiii vraiment beaucoup!!! pour tout c'que tu as fait code et explication, normalement avec ça j'vais pouvoir essayé de le refaire. Par contre dans mon cours on a pas vu encore JavaScrip on travaille essenciellement dans un premier temps du coté server avec PHP ensuite viendra le cote client avec javaScript. Merciii vraiment pour tout je commencer vraiment a désespérer
Lili_754
Messages postés
125
Date d'inscription
mercredi 18 avril 2012
Statut
Membre
Dernière intervention
31 mai 2016
2
4 mars 2013 à 21:46
4 mars 2013 à 21:46
La je vois que dans ton code tu utilises stecookie() à l'interieure du code alors que j'ai crus comprendre d'après mon prof qu'il faut les placer meme avant le <!DOCTYPE ...>
Autre question comment je peux voir les fichier de tes cookies que tu as créés??
Autre question comment je peux voir les fichier de tes cookies que tu as créés??
tryan44
Messages postés
1288
Date d'inscription
mardi 24 janvier 2012
Statut
Membre
Dernière intervention
26 octobre 2014
219
5 mars 2013 à 12:46
5 mars 2013 à 12:46
Pour qu'un cookie soit pris en compte au sein d'une même page, il faut une actualisation de celle-ci ou une redirection. En PHP vous pouvez utiliser "header location" sous condition qu'aucun contenu ne soit envoyé avant son appel.
La je vois que dans ton code tu utilises stecookie() à l'interieure du code alors que j'ai crus comprendre d'après mon prof qu'il faut les placer meme avant le <!DOCTYPE ...>
Exacte https://www.php.net/manual/fr/function.setcookie.php
Dans le cas présent, mon code est dépourvu d'entête et de tout le reste. C'est juste un code brute de teste qui doit être adapté à une mise en page complète.
Autre question comment je peux voir les fichier de tes cookies que tu as créés??
Avec Chrome : clique droit » Inspecter l'élément » (onglet) Ressources » (menu gauche) Cookies
La je vois que dans ton code tu utilises stecookie() à l'interieure du code alors que j'ai crus comprendre d'après mon prof qu'il faut les placer meme avant le <!DOCTYPE ...>
Exacte https://www.php.net/manual/fr/function.setcookie.php
Dans le cas présent, mon code est dépourvu d'entête et de tout le reste. C'est juste un code brute de teste qui doit être adapté à une mise en page complète.
Autre question comment je peux voir les fichier de tes cookies que tu as créés??
Avec Chrome : clique droit » Inspecter l'élément » (onglet) Ressources » (menu gauche) Cookies
4 mars 2013 à 15:26
4 mars 2013 à 15:29
4 mars 2013 à 15:56
si $_POST['nom'] existe alors $nom vaut la valeur de $_POST['nom'] sinon $nom vaut NULL.
4 mars 2013 à 16:03
4 mars 2013 à 16:10
Il s'agit de l'opérateur ternaire. Plus d'info ici : http://www.manuelphp.com/php/language.operators.comparison.ternary.php