Problème de Cookie avec Php : Discussion sur le forum Nouvelles technologies (informatique et high tech : Informations et discussions sur l'informatique, les gadgets, le web et le high tech en général.)
Voila je suis en train de faire un module de sondage.
Je ne connais que trois méthode pour qu'une personne ne vote pas plusieurs fois de suite :
- avec l'ip sauf qu'a chaque connection celle ci change
- avec l'adresse host mais même problème que l'ip
- enfin un cookie et c'est cet solution que j'ai choisi
j'ai donc fait ce script sauf que il n'arrive pas à trouver le cookie crée.
Si quelqu'un pourrait m'aider et si vous connaiser un autre solution ...
$c3 =0; $tmpV005 = mysql_query("SELECT * FROM `sond_lirep` WHERE `snd` = '".$tmpV002['id']."' ORDER BY `sond_lirep`.`nb` ASC "); while ($tmpV006 = mysql_fetch_array($tmpV005)){ if($c3==0){$Cr=" checked=\"checked\" ";}else{$Cr="";}
$c1 = 0; $tmpV003 = mysql_query("SELECT * FROM `sond_livot` WHERE `snd` = '".$tmpV002['id']."' "); while ($tmpV004 = mysql_fetch_array($tmpV003)){$c1++;} $ChaineHtml .= "<TABLE width=\"160\" cellpadding=\"3\" cellspacing=\"0\" style=\"border:1px solid #000000;\">"; $ChaineHtml .= "<TR ><td colspan=\"2\" style=\"border-bottom:1px solid #000000;\"><b>".$tmpV002['quest']."</b><br/>Nb de vote(s) : ".$c1."</td></TR>";
$tmpV005 = mysql_query("SELECT * FROM `sond_lirep` WHERE `snd` = '".$tmpV002['id']."' ORDER BY `sond_lirep`.`nb` ASC "); while ($tmpV006 = mysql_fetch_array($tmpV005)){
$c2 = 0; $tmpV008 = mysql_query("SELECT * FROM `sond_livot` WHERE `snd` = '".$tmpV002['id']."' AND `rep` = '".$tmpV006['nb']."' "); while ($tmpV009 = mysql_fetch_array($tmpV008)){$c2++;}
Je vais te montrer un exemple d'utilisation mais il y a différente manière d'exploiter un cookie. En gros, tu dois créer ton cookie avant d'envoyer tout flux HTML c'est à dire avant les entêtes Header ;p.
Une fois cela fait, le cookie va se placer tout seul chez le client avec une date d'expiration et tout ça. Tu pourras le modifier quand tu veux.
Voilà mon exemple d'utilisation pour le cas d'une mémorisation d'identifiants de connexion. Si la case "se souvenir de moi" est coché, ça va remplir remplir mon cookie (je fais une réactualisation Destruction => Création) sinon le cookie est vide. Bon, j'ai fait une sauvegarde pour 1 ans mais bon ;p.
Mon index.php a ce code avant les balises <HTML> :
Code PHP:
ob_start(); // Début de flux require_once('Authentification/memorisation.php'); // Appel au fichier pour mémoriser les identifiants sur Cookie session_start(); // Création d'une session ... ob_end_flush(); // Fin de flux
Mon fichier pour les cookies a ce code :
Code PHP:
// Définition de la durée du cookie (365 jours). $expire = 365*24*3600;
// Le formulaire a été validé if (isset($_POST['login']) && isset($_POST['password'])) { // Destruction du cookie setcookie('memoire[login]', '', time()-$expire); setcookie('memoire[password]', '', time()-$expire);
// Case cochée if (isset($_POST['memoire']) && $_POST['memoire']) { $c_login = $_POST['login']; $c_password = $_POST['password']; } else { $c_login = ''; $c_password = ''; } // Création du cookie setcookie("memoire[login]", $c_login, time()+$expire); setcookie("memoire[password]", $c_password, time()+$expire); } else { // Si le cookie existe, on extrait les infos. if (isset($_COOKIE['memoire']['login']) && isset($_COOKIE['memoire']['password'])) { $c_login = $_COOKIE['memoire']['login']; $c_password = $_COOKIE['memoire']['password']; $c_checked = 'checked="checked"'; } else { if (isset($_POST['login']) && isset($_POST['password'])) { $c_login = $_POST['login']; $c_password = $_POST['password']; } else { $c_login = ''; $c_password = ''; } $c_checked = ''; } }
Azaret, est-ce que tu as crée dès le départ ton cookie (si non existant) avant de pouvoir faire une écriture ou une lecture dessus ?
Le problème du cookie, c'est que s'il est supprimé, ben tu peux revoter sur le sondage ^^. Faudrait coupler ça avec la BDD ou d'autres choses.
en fait je crée le cookie dés que la personne vote.
Et dans la page principal suivant si il y le cookie ou pas j'affiche la question ou les resultats.
Au fait j'ai vérifier le problème n'est pas la création du cookie il le crée bien d'autant plus que quand je crée un cookie je n'envoie le flux html qu'a la fin juste la redirection.
Dernière modification par Azaret : 20/06/2007 à 22h18.