Problème de cookies
Résolu
Fastoche
-
Fastoche -
Fastoche -
* Bonjour, j'ai un petit problème avec un site que je suis en train de créer. Pouvez-vous m'aider svp ? C'est un site où on vote Pour ou Contre des trucs. Il y a une seule page, avec deux paramètres dans la barre d'adresse : a, qui est l'identifiant du truc précédent, et b l'identifiant du truc en cours.
*
* Un cookie est posé à chaque vote. Si l'id est 3, le cookie s'appelle b3. Pour générer l'identifiant suivant, on prend un nombre aléatoire $ran et on le régénère autant de fois qu'il le faut pour qu'un cookie ne soit pas posé sur son nom.
*
* Voilà le problème : les cookies se posent bien (j'ai vérifié), mais l'id suivant peut très bien être un id attaché à un cookie déjà posé ! Par ailleurs, lorsque tous les cookies sont posés, la boucle while dure à l'infini, comme prévu cette fois-ci.
*
* En fait, tout se passe comme si la boucle while faisait à chaque fois une étape en plus ou en moins... mystérieux !
*
* En espérant que quelqu'un prendra le temps de lire tout ça et de m'aider ! ^^
*
* Voici le code du site, avec les trucs apparemment sans incidence enlevés :
*
* Un cookie est posé à chaque vote. Si l'id est 3, le cookie s'appelle b3. Pour générer l'identifiant suivant, on prend un nombre aléatoire $ran et on le régénère autant de fois qu'il le faut pour qu'un cookie ne soit pas posé sur son nom.
*
* Voilà le problème : les cookies se posent bien (j'ai vérifié), mais l'id suivant peut très bien être un id attaché à un cookie déjà posé ! Par ailleurs, lorsque tous les cookies sont posés, la boucle while dure à l'infini, comme prévu cette fois-ci.
*
* En fait, tout se passe comme si la boucle while faisait à chaque fois une étape en plus ou en moins... mystérieux !
*
* En espérant que quelqu'un prendra le temps de lire tout ça et de m'aider ! ^^
*
* Voici le code du site, avec les trucs apparemment sans incidence enlevés :
<?php
$a = $_GET['a'];
$b = $_GET['b'];
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options);
if (($_POST['vote']=='oui') || ($_POST['vote']=='non'))
{
setcookie('b'.$a, 'ok', time() + 10*365*24*3600);
}
?>
<?php $reponse2 = $bdd->query('SELECT * FROM nombre');
$donnees2 = $reponse2->fetch();
$ran=floor(rand(0, ($donnees2['nombre']-1)));
while (($_COOKIE['b'.$ran]=='ok') || ($ran==$b))
{
$ran=rand(0, ($donnees2['nombre']-1));
}
;?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Titre à choisir</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
</head>
<body>
<div class="for">
<form method="post" action=<?php echo "accueil.php?a=$b&b=$ran" ?>>
<input type="radio" name="vote" value="oui" id="oui" /> <label for="oui">Pour</label></br>
<input type="radio" name="vote" value="non" id="non" /> <label for="non">Contre</label></br>
<input type="submit" value="Valider" />
</form>
</div>
</div>
</body>
</html>
A voir également:
- Problème de cookies
- Supprimer les cookies - Guide
- Cookies manager - Télécharger - Confidentialité
- Pop up cookies - Guide
- Ou sont stockés les cookies firefox ✓ - Forum Mozilla Firefox
- Où sont stockés les cookies ? - Forum Windows 10