[php] problème avec un cookie

Résolu/Fermé
steph70 - 25 juil. 2008 à 19:18
 steph70 - 26 juil. 2008 à 10:26
Bonjour,
j'ai mis en place sur mon site un choix d'arrière plan pour le site.

Ca fonctionnait mais dès que je repassais par mon index, je reprennais la couleur par defaut.

J'ai donc choisis de mettre en place un cookie qui garderait en mémoire le choix du visiteur et la : problème.

En effet, si le visiteur ferme sa session et reviens pas de soucis. Mais si il le fait une seconde fois ca reprend de nouveau la couleur par defaut comme si lorsqu'il revient la première fois le cookie etait reinitailiser sur la valeur par defaut.

Je cherche, je cherche mais je ne trouve pas comment passer au travers de ceci. Je viens donc a vous dans l'espoir que vous pourrez me donner un coup de main.

Voici mon code :
<?php
session_start(); // initialisation de la session
?>
<?
$expire = 365*24*3600;  // on définit la durée du cookie, 1 an
setCookie("style",$_POST['couleur'],time()+$expire);
?>
<html>
<?php
$a=array("<body bgcolor=\"#FFCCFF\">","<body bgcolor=\"#CCFFFF\">","<body bgcolor=\"#99FF99\">","<body bgcolor=\"#E8E8E8\">"); //variable des arrières plan
?>
<form method="post">//formulaire de choix
<select name="couleur">
<option value="red">Couleur rose</option><br/>
<option value="blue">Couleur bleue</option><br/>
<option value="vert">Couleur verte</option><br/>
<option value="brun" 
selected>Couleur par defaut</option><br/>
</select>
<input type="submit" />
</form>

<?php
if (empty($_COOKIE['style'])) //si le cookie est vide prendre le choix par default ou le choix choisis
	switch ($_POST['couleur'])
	{
		case"red":
		print ($a[0]);
		break;
		case"vert":
		print($a[2]);
		break;
		case "blue":
		print ($a[1]);
		break;
		default:
		print ($a[3]);
		break;
			}
else	
	switch ($_COOKIE['style']) //si il possède une valeur afficher l'arrière plan du cookie
	{
		case "red":
		print ($a[0]);
		break;
		case"vert":
		print($a[2]);
		break;
		case "blue":
		print ($a[1]);
		break;
		case "brun":
		print ($a[3]);
		break;
		}
	
?>
<?php
$_SESSION['couleur']=$_POST['couleur']; //definition variable session pour les autres pages
print ("<br/>");
print ("La valeur de a est :" .$_SESSION['couleur']);
?>
<?php
print ("<br/>");
print ("la couleur de style est : " .$_COOKIE['style']);
?>
</body>
</html>


Amicalement
Steph70
A voir également:

2 réponses

Utilisateur anonyme
25 juil. 2008 à 19:56
Salut,
<?php
$expire = 365*24*3600;  // on définit la durée du cookie, 1 an
setCookie("style",$_POST['couleur'],time()+$expire­);
?>

En admettant qu'il arrive sur cette page sans avoir choisi de couleur, ton $_POST est donc vide.
Il faut donc que tu vérifies l'existence du $_POST avant d'écrire ton cookie.
<?php
if(isset($_POST['couleur'])){
$expire = 365*24*3600;  // on définit la durée du cookie, 1 an
setCookie("style",$_POST['couleur'],time()+$expire­);
}
?>

Test ça et dis moi si ça marche.
0
Re,

désolé pour ma réponse tardive.

J'ai essayé et ... CA MARCHE !!!!

Bravo et merci bcp

Amicalement
Steph70
0