Gros problème avec les cookies

Signaler
Messages postés
40
Date d'inscription
lundi 13 février 2012
Statut
Membre
Dernière intervention
18 avril 2014
-
Messages postés
1123
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
26 juin 2008
-
Bonjour,

Je développe un site que je veux adaptable au mal voyant, cela signifie que j'ai créé une petite barre à l'instar de celle présenta lors de l'installation de certaines version de linux permettant de choisir une couleur de fond.

Pour ce faire (cf. code joint ci-dessous) il me parrait judicieux de lire un cookie sur l'ordinateur client. Si celui-ci n'existe pas, je le crée, à l'inverse je le charge et l'exploite.

Dans la phase d'exploitation je test si dans l'url une autre couleur ($nc pour nouvelle couleur) à été passée en paramètre.
Si telle n'est pas le cas je continue le programme.
Mais si telle est le cas alors je voudrais "l'enregistrer sur le poste client" puis l'esploiter.
Je dois donc recréer le cookie et je pense forcer la page à se recharger, mais c'est là que le bas blesse, car je n'arrive pas à le recréer sans essuyer différent messages d'erreur tous convergeant vers la même conclusion, cette parte de mon programme ne fonctionne pas.

Alors voici le code :

En premier lieu : index.php

<?
if($imcca){
// le cookie existe, on le charge
$coul= $imcca;
// on vérifie si une nouvelle couleur de fond a été envoyé
if (!empty($nc)){
// si c'est le cas on vérifie si la nouvelle couleur est différente de celle importée du cookie
if ($coul!=$nc){
// on la place dans la variable de couleur par défaut
$coul=$f;
setcookie("imcca",$coul,time+(86400*365),"/");
}
}
} else {
// le cookie n'existe pas, on le crée en lui attribuant une couleur par défaut
$coul="#FFDB9D";
setcookie("imcca",$coul,time+(86400*365),"/");
}
?>
<HTML>
<HEAD>
<TITLE>...</TITLE>
.......
</HEAD>

\">
----

<TD width=\"648\" valign=\"top\" align=\"center\">
<TABLE width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
<!-- Entete de page -->
<? include \"./entete.php\"; ?>
<!-- Fin entete de page -->
 	<!-- Barre d'outils -->   
      	<? include \"./toolbar.php\"; ?>  
	<!-- Fin barre d'outils -->  
(......)

</HTML>


et maintenant voici une ligne d'appel issue de toolbar.php :

<TD bgcolor ="#DEFFFF" width="70" height="4" border="0">
        

              [./index.php?rub=<? echo $r ?> "> 
       
               ]
         



D'avance merci pour votre très précieuse contribution.

Ph. Sautreau

3 réponses

Messages postés
1123
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
26 juin 2008
1
Salut

ton probleme est simple

sur un lien tu mets
OnClick= "<? setcookie("imcca","#DEFFFF",time+(86400*365),"/"); ?>"

mais c'est impossible parceque le cookie est généré avant que le header de la page soit envoyé (avant la 1ere balise html). En plus si ce code marcherai il serait exécuter au chargement de la page.
Ce ke tu dois faire c tout simplement a la place de ton lien faire une redirection du genre

navi.php?rub=blabla

dans ta page navi.php tu pourras comme tu en a envis créer ou annuler un cookie et ensuite tu inclus la page de la variable rub

include("$rub");

Voila
++

--> http://www.kame-house.org <--
La plus grosse base de données sur les dessins animés des années 80
Site gratuit et sans pub
Messages postés
40
Date d'inscription
lundi 13 février 2012
Statut
Membre
Dernière intervention
18 avril 2014

Re,

Et merci pour cette aide, mais le problème reste entier, car en faisant :

[./index.php?rub= <? echo $r ?>&nc=<? echo $codecouleur ?>

je n'arrive toujours pas à détruire le cookie en cours pour le recréer avec le nouveau code couleur.

Question, donc :

Comment efface-t-on un cookie et le recrée-t-on (avec le même nom, la même durée avant expiration, etc.. mais bien sûr pas avec la même valeur ) dans la même page (index.php) sans se payer des message d'erreur ?

Encore merci !
Ph. Sautreau
Messages postés
1123
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
26 juin 2008
1
pour éffacer un cookie tu doit entrer le meme code que pour le créer mais ne met aucune valeur dedans, ni aucune limite de temps, juste setcookie(nomducookie) et c tt

++

--> http://www.kame-house.org <--
La plus grosse base de données sur les dessins animés des années 80
Site gratuit et sans pub