Formulaire de personnalisation de la page - PHP - Programmation
Marsh Posté le 15-12-2006 à 16:28:38
ouch.
je refuse de lire ça.
Marsh Posté le 15-12-2006 à 16:46:55
Donc là je corrige comme cela?
Est-ce qu'on peut faire plusieurs posts au sein d'un cookie?
<?php
// on inclut toujours notre fichier de design
include ('design.php');
$expire=365*24*3600;
// on envoie notre cookie de nom DESGIN (donc il sera utilisable via la variable $DESIGN) contenant la couleur, image et titres et choisis (c'est-à-dire le contenu de la variable $couleur)
setcookie ("DESIGN1", $_POST['couleur'], time() + $expire);
setcookie ("DESIGN2", $_POST['image'], time() + $expire);
setcookie ("DESIGN3", $_POST['titre'], time() + $expire);
?>
Marsh Posté le 15-12-2006 à 16:47:55
http://fr3.php.net/manual/fr/function.setcookie.php
Marsh Posté le 15-12-2006 à 16:52:57
(non parce-que c'est absolument n'importe-quoi, ce que tu fais là, hein...)
Marsh Posté le 15-12-2006 à 17:00:50
skeye a écrit : (non parce-que c'est absolument n'importe-quoi, ce que tu fais là, hein...) |
Comment faire donc pour transporter plusieurs posts au sein d'un cookie?
Faut-t-il faire un cookie par post (je veux obtenir couleur titre et image)?
Marsh Posté le 15-12-2006 à 17:02:32
Plusieurs setcookie.
Et tu ne "transportes pas plusieurs posts", tu stockes des valeurs dans un cookie.
Marsh Posté le 15-12-2006 à 17:05:50
skeye a écrit : Plusieurs setcookie. |
Donc là je corrige comme cela?
<?php
// on inclut toujours notre fichier de design
include ('design.php');
$expire=365*24*3600;
// on envoie notre cookie de nom DESGIN (donc il sera utilisable via la variable $DESIGN) contenant la couleur, image et titres et choisis (c'est-à-dire le contenu de la variable $couleur)
setcookie ("DESIGN1", $_POST['couleur'], time() + $expire);
setcookie ("DESIGN2", $_POST['image'], time() + $expire);
setcookie ("DESIGN3", $_POST['titre'], time() + $expire);
?>
Marsh Posté le 15-12-2006 à 17:10:11
...et pourquoi pas
Code : |
tant qu'à faire? au moins ce serait un poil plus compréhensible...
Marsh Posté le 15-12-2006 à 17:10:53
pourquoi ne pas serialiser ?
Code :
|
Et pour récupérer le contenu du cookie :
Code :
|
Marsh Posté le 15-12-2006 à 17:13:46
Pourquoi pas...mais il a pas intérêt à vouloir rajouter un truc dans son $designs un jour, sinon les gens qui ont un cookie valide vont avoir des surprises...
Je vois pas vraiment l'intérêt de sérialiser, là, autant faire un cookie pour chaque, mais si c'est plus verbeux...
Marsh Posté le 15-12-2006 à 17:26:12
skeye a écrit : Pourquoi pas...mais il a pas intérêt à vouloir rajouter un truc dans son $designs un jour, sinon les gens qui ont un cookie valide vont avoir des surprises... |
Donc si fais 3 setcookie, la partie du code suivante n'est plus valable :
// cas où le site sera vert avec image 2 et titre 1
elseif ($_COOKIE['DESIGN'] == "vert" && $_COOKIE['DESIGN'] == "image2" && $_COOKIE['DESIGN'] == "titre1" )
{
$background = "#badbb7";
$image = "image2.jpg" ;
$titre = ""titre1"";
}
Et il faudra la remplacer par? :
elseif ($_COOKIE['COULEUR'] == "vert" && $_COOKIE['IMAGE'] == "image2" && $_COOKIE['TITRE'] == "titre1" )
{
$background = "#badbb7";
$image = "image2.jpg" ;
$titre = ""titre1"";
}
Je ne sais pas si la logique et la syntaxe est bonne?
Marsh Posté le 15-12-2006 à 17:27:17
L'interêt de serialiser est que si jamais tu as envie de rajouter des choses dans le cookie et que tu ne serialises pas, tu vas devoir rajouter un nouveau setcookie.
Alors que si tu serialises, meme si ton array que tu serialises n'est pas forcément initialisé ici, il te suffit de rajouter clef => valeur dans l'array pour que la valeur soit automatiquement placée dans le cookie puisque l'array est serialisé.
Marsh Posté le 15-12-2006 à 17:31:16
Le reste de ton code est très laid...
Vraiment.
On ne fera JAMAIS une suite de if/else de ce genre. Je ne comprends pas pourquoi tu ne mets pas directement tes valeurs dans tes cookies pour les relire ensuite...bref, tu aurais manifestement besoin pour commencer d'apprendre un peu à programmer...
Marsh Posté le 15-12-2006 à 17:32:55
vanadium a écrit : L'interêt de serialiser est que si jamais tu as envie de rajouter des choses dans le cookie et que tu ne serialises pas, tu vas devoir rajouter un nouveau setcookie. |
oui, mais à la désérialisation il se passe quoi si dans le cookie sérialisé auparavant il te manque une valeur?
Tu vas vouloir utiliser un indice de tableau qui n'existe pas, derrière...il faut rajouter des contrôles un peu partout, dans ce cas, c'est le bordel...
Marsh Posté le 15-12-2006 à 17:36:52
Je te retourne la question :
il se passe quoi si le cookie que tu es censé avoir mis n'existe pas ?
Il se passe exactement la meme chose que si ton cookie specifique à la valeur n'a pas été crée sur le cookie sur la machine du visiteur. Ta remarque n'est donc pas pertinente puisque le probleme se retrouve aussi bien dans ton modele que dans le mien.
Marsh Posté le 15-12-2006 à 17:37:55
vanadium a écrit : Je te retourne la question : |
non.
Quand tu lis un cookie tu testes forcément son existance. Dans ton cas le cookie existe, c'est son contenu qui est mauvais.
Marsh Posté le 15-12-2006 à 17:45:52
vanadium a écrit : Je te retourne la question : |
skeye a écrit : non. |
Si tu n'ecris pas le test explicitement comme ceci, php ne le fera pas pour toi :
Code :
|
De plus, dans mon cas le cookie n'existera pas puisque php va lever un notic "Undefined index" et retourner null. il est bien évident que dans ton cas comme dans le mien, il sera plus prudent de tester l'existence de l'index ( que ce soit de mon tableau déserialisé ou du tableau $_COOKIE).
Autre chose, il s'agissait d'une question ouverte qui demandait autre chose comme réponse que "non".
Marsh Posté le 15-12-2006 à 18:59:40
non, tu ne vois pas ce que je veux dire.
Effectivement dans mon cas il faudra une ligne comme celle que tu donnes.
Dans ton cas c'est plus vicieux : mettons qu'il y ait un cookie 'design' dans lequel sont sérialisés la couleur et le titre.
Au bout de quelques semaines d'utilisation, tu veux ajouter l'image.
Problème :
Si tu le fais 'simplement', à la lecture ton $_COOKIE['design'] va exister, mais à la désérialisation il va manquer $design['image'].
Résultat, à l'utilisation il truc va te péter à la gueule à l'endroit où tu vas vouloir utiliser ton $design['image']. Et il n'y a pas vraiment de moyen simple de contourner ça.
Tandis qu'avec plusieurs cookies il te suffit de relire ton cookie comme tu le fais avec les autres (tu peux même t'amuser à stocker les valeurs attendues dans un tableau et à faire une boucle si tu tiens tant que ça à gagner quelques lignes de code).
Bref, comme je l'ai déjà dit ailleurs à un autre, l'idée est bonne, mais dans la pratique n'est pas souhaitable à mon avis.
Marsh Posté le 15-12-2006 à 19:38:43
skeye a écrit : non, tu ne vois pas ce que je veux dire. |
D'une part, si ton cookie a une validité de plusieurs semaines juste pour des informations sur le design du site, alors c'est incorrect puisqu'il n'y a aucun interet à conserver ces informations autant de temps.
Ensuite, que ce soit $_COOKIE['image'] ou $design['image'] qui ne soit pas initialisé, l'erreur levée par PHP est exactement la même. Je tinvite à tester le code ci-dessous pour t'en convaincre :
Code :
|
Et il n'y a pas de "tu le fais simplement" qui tienne. En effet, $_COOKIE a beau être une variable superglobale (réfère toi au manuel php pour de plus ample informations sur la définition de ce terme), $_COOKIE n'en demeure pas moins un tableau (array()) comme un autre.
Voici ce qui apparait à l'écran si tu executes le code ci-dessus :
Citation : |
Cela confirme donc bien que ce que tu dis est faux : $_COOKIE['tonindex'] n'existe pas s'il n'est pas initialisé. Et le code ci-dessus te le démontre très clairement.
Maintenant que je t'ais démontré que tu avais tort, laisse moi préciser que pour toute variable récupérée de $_COOKIE, $_GET, $_POST, $_SESSION il est indispensable de faire ceci :
Code :
|
De manière générale, si l'on n'est pas sur de la valeur d'une variable récupérée ou que celle-ci provient d'un index d'une variable superglobale, il vaut mieux toujours se prémunir en prévoyant une assignation par défaut.
EDIT : j'oubliais le principal. Si tu as modifié ton programme comme tu le dis, que tu as conscience que des utilisateurs vont avoir des problèmes avec leur cookie mal initialisé et que tu n'as rien fait pour prévenir ce problème alors permet moi de te féliciter.
Marsh Posté le 15-12-2006 à 19:59:04
Tu n'as rien démontré du tout à part ton incapacité à comprendre ce que j'essaie de te faire rentrer dans le crane.
Et arrête d'essayer de me donner des cours sur un langage que je pratique pour le boulot depuis plusieurs années, c'est agaçant.
1) Ses cookies sont valides un an, si je lis bien son code. Ca se défend.
2) Oui, comme je l'ai déjà confirmé, il faut tester le contenu de $_COOKIE avant de s'en servir, et mettre une valeur par défaut si l'indice n'est pas là.
3) Ta solution risque d'engendrer des choses comme celle-ci, si c'est plus clair:
A un instant t, l'utilisateur change ses préférences, on enregistre :
Code : |
à t+1, l'auteur du site veut ajouter l'image dans le design.
à t+2 l'utilisateur revient, on veut récupérer le contenu du cookie :
Code :
|
Avec une solution à plusieurs cookies, pas de soucis.
Avec cette solution, il faut tester l'existence de chaque indice de $design, même si $_COOKIE a bien un indice 'design'.
Tu comprends où je veux en venir maintenant ou bien t'es juste con pour le plaisir?
Marsh Posté le 15-12-2006 à 20:22:47
skeye a écrit : Tu n'as rien démontré du tout à part ton incapacité à comprendre ce que j'essaie de te faire rentrer dans le crane.
|
[mode skeye ON]non.[/mode skeye OFF] (en référence à ta réponse à ma question précédente)
Dans ton code il parait effectivement evident que tu as du mal à pondre du code php propre:
$design = array('bleu','truc','monimage') aura pour effet dans le cas par defaut d'initialiser $design[0] à 'bleu', $design[1] à 'truc' et je te laisse deviner la fin.
Je complète et corrige donc ton code :
Code :
|
Par ailleurs, je te demanderais d'éviter de m'insulter.
Marsh Posté le 16-12-2006 à 10:57:55
C'est du code pondu en 30 secondes pour l'exemple...
Et ta 'correction' met en évidence ce que je voulais te faire dire depuis le début : tu as besoin de vérifier chaque champs ajouté à $design pour éviter les soucis, au final t'as des vérifications pas homogènes sur tous les champs...bref, c'est beaucoup d'emmerdes pour rien.
Marsh Posté le 18-12-2006 à 15:28:35
vanadium a écrit : .. si ton cookie a une validité de plusieurs semaines juste pour des informations sur le design du site, alors c'est incorrect puisqu'il n'y a aucun interet à conserver ces informations autant de temps. |
En même temps le seul cas dans lequel j'utiliserais un cookie avec une validité aussi longue serais pour une question de design...
Marsh Posté le 18-12-2006 à 15:33:06
chani_t a écrit : En même temps le seul cas dans lequel j'utiliserais un cookie avec une validité aussi longue serais pour une question de design... |
T'as pas beaucoup d'imagination.
Regarde ce forum : ton login et le md5 de ton mot de passe sont dans un cookie, pour t'éviter de te ré identifier à chaque visite, par exemple.
Marsh Posté le 18-12-2006 à 15:46:02
skeye a écrit : T'as pas beaucoup d'imagination. |
vi ils sont dans un cookie, mais il expire pas dans un an ...
Marsh Posté le 18-12-2006 à 15:56:37
chani_t a écrit : vi ils sont dans un cookie, mais il expire pas dans un an ... |
Il expirait pas tout court, il y a de ça quelque temps...
Marsh Posté le 18-12-2006 à 16:12:11
skeye a écrit : Il expirait pas tout court, il y a de ça quelque temps... |
A ben ok... ba j'aurais tendance à ne pas claquer un cookies de login avec un temps trés long... chais pas ... ça ne me parait pas super.
Marsh Posté le 18-12-2006 à 16:14:41
chani_t a écrit : A ben ok... ba j'aurais tendance à ne pas claquer un cookies de login avec un temps trés long... chais pas ... ça ne me parait pas super. |
C'est une façon de faire les choses...décider que l'utilisateur doit faire l'action de se déconnecter lui-même.
Marsh Posté le 20-12-2006 à 13:40:53
Beh, moi, je vois la chose autrement
Pour les cookies, on stock un nom ; ex: 'design 1'
Et puis, on a a coté quelque part la représentation de design 1 (un fichier ini par exemple)
On a une fonction PHP du style
getDesign($nom) qui mets des valeurs dans un tableau (il lit le ini)
Apres, on peut faire :
template->assign("DESIGN", getDesign("design 1" ));
Et dans son template par exemple
<body bgcolor="{$DESIGN.bodyBgcolor}">
etc..
Marsh Posté le 20-12-2006 à 13:43:38
sauf que t'as pas forcément envie de prédéfinir un nombre fixe de designs.
Si tu veux laisser une vraie possibilité de personnaliser à l'utilisateur ta solution ne tient pas debout...
Marsh Posté le 20-12-2006 à 13:45:41
Et en quoi on peut pas définir plusieurs design dans ma solution ?
Ma solution repose sur un identifiant, pas sur des valeurs enregistrés dans un cookie, je trouve au contraire que ma méthode repose sur un infinité de design
Marsh Posté le 20-12-2006 à 13:47:11
Non.
Ta solution oblige le développeur à prévoir un nombre fini de designs à l'avance.
Si tu veux permettre à ton utilisateur de mettre n'importe quelle valeur RGB comme couleur de fond, il se passe quoi?
Marsh Posté le 20-12-2006 à 13:52:30
skeye a écrit : Non. |
beh, il se passe qu'il aurait la couleur de fond voulu
Marsh Posté le 20-12-2006 à 13:53:57
nORKy a écrit : beh, il se passe qu'il aurait la couleur de fond voulu |
euh, non.
Tu irais remplir autant de fichiers ini qu'il y a de combinaisons RGB possibles?
Marsh Posté le 20-12-2006 à 13:56:13
skeye a écrit : euh, non. |
Quelle idée de vouloir designer son site !!
Marsh Posté le 20-12-2006 à 13:58:34
nORKy a écrit : Quelle idée de vouloir designer son site !! |
Va falloir arrêter de boire entre midi et deux, hein...
Marsh Posté le 20-12-2006 à 14:04:07
nORKy a écrit : Beh, moi, je vois la chose autrement |
Marrant, le fichier ini ressemble à un fichier CSS. Pourquoi vouloi utiliser genre un bgcolor qui date de la préhistoire ? Autant faire directement un CSS côté serveur correspondant à ce que veut le gars. Je pige pas pourquoi tu t'embêtes à tout refaire, pour finalement pondre de l'HTML-caca
Marsh Posté le 20-12-2006 à 14:43:00
FlorentG a écrit : Marrant, le fichier ini ressemble à un fichier CSS. Pourquoi vouloi utiliser genre un bgcolor qui date de la préhistoire ? Autant faire directement un CSS côté serveur correspondant à ce que veut le gars. Je pige pas pourquoi tu t'embêtes à tout refaire, pour finalement pondre de l'HTML-caca |
c'est pas à moi qu'il faut le dire alors ;-) Mais à l'auteur du sujet
Ca fait bien longtemps que je ne fais plus de 'HTML-caca'...
Marsh Posté le 20-12-2006 à 14:46:08
clair que suffit de créer un css avec les choix de l'utilisateurs...
Marsh Posté le 15-12-2006 à 16:27:40
Bonjour;
Je suis débutant en programmation.
J'ai fait une tentative de petit système de personnalisation du design d'une page web.
J'ai des doutes au niveau de send_design.php (voir le code ci-joint) au niveau du cookie (je ne suis pas sûr qu'on puisse faire plusieurs posts au sein d'un même cookie) et j'ai des doutes an niveau du html (voir la fin: <p> et </p> sont-ils bien placés?).
J'envoie le code et pour correction ou de l'amélioration si certains veulent bien. Merci.
La page design.php permet de tester la valeur du cookie afin d'utiliser le bon design, et s'il n'est pas présent, d'utiliser le design par défaut.
On aura alors le code suivant (pour la page design.php):
<?php
// on teste si le cookie est declare (si il n'est pas déclaré, on applique la couleur verte ; image1.jpg et titre1 par défaut)
if (!isset($_COOKIE['DESIGN']))
{
$background = "#badbb7";
$image = "image1.jpg";
$titre = ""titre1"";
}
else
{
// cas où le site sera bleu avec image 1 et titre 1
if ($_COOKIE['DESIGN'] == "bleu" && $_COOKIE['DESIGN'] == "image1" && $_COOKIE['DESIGN'] == "titre1" )
{
$background = "#aac5f4";
$image = "image1.jpg" ;
$titre = ""titre1"";
}
// cas où le site sera bleu avec image 2 et titre 1
elseif ($_COOKIE['DESIGN'] == "bleu" && $_COOKIE['DESIGN'] == "image2" && $_COOKIE['DESIGN'] == "titre1" )
{
$background = "#aac5f4";
$image = "image2.jpg" ;
$titre = ""titre1"";
}
// cas où le site sera bleu avec image 3 et titre 1
elseif ($_COOKIE['DESIGN'] == "bleu" && $_COOKIE['DESIGN'] == "image3" && $_COOKIE['DESIGN'] == "titre1" )
{
$background = "#aac5f4";
$image = "image3.jpg" ;
$titre = ""titre1"";
}
// cas où le site sera bleu avec image 1 et titre 2
elseif ($_COOKIE['DESIGN'] == "bleu" && $_COOKIE['DESIGN'] == "image1" && $_COOKIE['DESIGN'] == "titre2" )
{
$background = "#aac5f4";
$image = "image1.jpg" ;
$titre = ""titre2"";
}
// cas où le site sera bleu avec image 1 et titre 3
elseif ($_COOKIE['DESIGN'] == "bleu" && $_COOKIE['DESIGN'] == "image1" && $_COOKIE['DESIGN'] == "titre3" )
{
$background = "#aac5f4";
$image = "image1.jpg" ;
$titre = ""titre3"";
}
// cas où le site sera bleu avec image 2 et titre 2
elseif ($_COOKIE['DESIGN'] == "bleu" && $_COOKIE['DESIGN'] == "image2" && $_COOKIE['DESIGN'] == "titre2" )
{
$background = "#aac5f4";
$image = "image2.jpg" ;
$titre = ""titre2"";
}
// cas où le site sera bleu avec image 2 et titre 3
elseif ($_COOKIE['DESIGN'] == "bleu" && $_COOKIE['DESIGN'] == "image2" && $_COOKIE['DESIGN'] == "titre3" )
{
$background = "#aac5f4";
$image = "image2.jpg" ;
$titre = ""titre3"";
}
// cas où le site sera bleu avec image 3 et titre 2
elseif ($_COOKIE['DESIGN'] == "bleu" && $_COOKIE['DESIGN'] == "image3" && $_COOKIE['DESIGN'] == "titre2" )
{
$background = "#aac5f4";
$image = "image3.jpg" ;
$titre = ""titre2"";
}
// cas où le site sera bleu avec image 3 et titre 3
elseif ($_COOKIE['DESIGN'] == "bleu" && $_COOKIE['DESIGN'] == "image3" && $_COOKIE['DESIGN'] == "titre3" )
{
$background = "#aac5f4";
$image = "image3.jpg" ;
$titre = ""titre3"";
}
// cas où le site sera rouge avec image 1 et titre 1
elseif ($_COOKIE['DESIGN'] == "rouge" && $_COOKIE['DESIGN'] == "image1" && $_COOKIE['DESIGN'] == "titre1" )
{
$background = "#fbbda8";
$image = "image1.jpg" ;
$titre = ""titre1"";
}
// cas où le site sera rouge avec image 2 et titre 1
elseif ($_COOKIE['DESIGN'] == "rouge" && $_COOKIE['DESIGN'] == "image2" && $_COOKIE['DESIGN'] == "titre1" )
{
$background = "#fbbda8";
$image = "image2.jpg" ;
$titre = ""titre1"";
}
// cas où le site sera rouge avec image 3 et titre 1
elseif ($_COOKIE['DESIGN'] == "rouge" && $_COOKIE['DESIGN'] == "image3" && $_COOKIE['DESIGN'] == "titre1" )
{
$background = "#fbbda8";
$image = "image3.jpg" ;
$titre = ""titre1"";
}
// cas où le site sera rouge avec image 1 et titre 2
elseif ($_COOKIE['DESIGN'] == "rouge" && $_COOKIE['DESIGN'] == "image1" && $_COOKIE['DESIGN'] == "titre2" )
{
$background = "#fbbda8";
$image = "image1.jpg" ;
$titre = ""titre2"";
}
// cas où le site sera rouge avec image 1 et titre 3
elseif ($_COOKIE['DESIGN'] == "rouge" && $_COOKIE['DESIGN'] == "image1" && $_COOKIE['DESIGN'] == "titre3" )
{
$background = "#fbbda8";
$image = "image1.jpg" ;
$titre = ""titre3"";
}
// cas où le site sera rouge avec image 2 et titre 2
elseif ($_COOKIE['DESIGN'] == "rouge" && $_COOKIE['DESIGN'] == "image2" && $_COOKIE['DESIGN'] == "titre2" )
{
$background = "#fbbda8";
$image = "image2.jpg" ;
$titre = ""titre2"";
}
// cas où le site sera rouge avec image 2 et titre 3
elseif ($_COOKIE['DESIGN'] == "rouge" && $_COOKIE['DESIGN'] == "image2" && $_COOKIE['DESIGN'] == "titre3" )
{
$background = "#fbbda8";
$image = "image2.jpg" ;
$titre = ""titre3"";
}
// cas où le site sera rouge avec image 3 et titre 2
elseif ($_COOKIE['DESIGN'] == "rouge" && $_COOKIE['DESIGN'] == "image3" && $_COOKIE['DESIGN'] == "titre2" )
{
$background = "#fbbda8";
$image = "image3.jpg" ;
$titre = ""titre2"";
}
// cas où le site sera rouge avec image 3 et titre 3
elseif ($_COOKIE['DESIGN'] == "rouge" && $_COOKIE['DESIGN'] == "image3" && $_COOKIE['DESIGN'] == "titre3" )
{
$background = "#fbbda8";
$image = "image3.jpg" ;
$titre = ""titre3"";
}
// cas où le site sera vert avec image 1 et titre 1
elseif ($_COOKIE['DESIGN'] == "vert" && $_COOKIE['DESIGN'] == "image1" && $_COOKIE['DESIGN'] == "titre1" )
{
$background = "#badbb7";
$image = "image1.jpg" ;
$titre = ""titre1"";
}
// cas où le site sera vert avec image 2 et titre 1
elseif ($_COOKIE['DESIGN'] == "vert" && $_COOKIE['DESIGN'] == "image2" && $_COOKIE['DESIGN'] == "titre1" )
{
$background = "#badbb7";
$image = "image2.jpg" ;
$titre = ""titre1"";
}
// cas où le site sera vert avec image 3 et titre 1
elseif ($_COOKIE['DESIGN'] == "vert" && $_COOKIE['DESIGN'] == "image3" && $_COOKIE['DESIGN'] == "titre1" )
{
$background = "#badbb7";
$image = "image3.jpg" ;
$titre = ""titre1"";
}
// cas où le site sera vert avec image 1 et titre 2
elseif ($_COOKIE['DESIGN'] == "vert" && $_COOKIE['DESIGN'] == "image1" && $_COOKIE['DESIGN'] == "titre2" )
{
$background = "#badbb7";
$image = "image1.jpg" ;
$titre = ""titre3"";
}
// cas où le site sera vert avec image 1 et titre 3
elseif ($_COOKIE['DESIGN'] == "vert" && $_COOKIE['DESIGN'] == "image1" && $_COOKIE['DESIGN'] == "titre3" )
{
$background = "#badbb7";
$image = "image1.jpg" ;
$titre = ""titre3"";
}
// cas où le site sera vert avec image 2 et titre 2
elseif ($_COOKIE['DESIGN'] == "vert" && $_COOKIE['DESIGN'] == "image2" && $_COOKIE['DESIGN'] == "titre2" )
{
$background = "#badbb7";
$image = "image2.jpg" ;
$titre = ""titre2"";
}
// cas où le site sera vert avec image 2 et titre 3
elseif ($_COOKIE['DESIGN'] == "vert" && $_COOKIE['DESIGN'] == "image2" && $_COOKIE['DESIGN'] == "titre3" )
{
$background = "#badbb7";
$image = "image2.jpg" ;
$titre = ""titre3"";
}
// cas où le site sera vert avec image 3 et titre 2
elseif ($_COOKIE['DESIGN'] == "vert" && $_COOKIE['DESIGN'] == "image3" && $_COOKIE['DESIGN'] == "titre2" )
{
$background = "#badbb7";
$image = "image3.jpg" ;
$titre = ""titre2"";
}
// cas où le site sera vert avec image 3 et titre 3
elseif ($_COOKIE['DESIGN'] == "vert" && $_COOKIE['DESIGN'] == "image3" && $_COOKIE['DESIGN'] == "titre3" )
{
$background = "#badbb7";
$image = "image3.jpg" ;
$titre = ""titre3"";
}
// cas où le visite n'a pas choisi de couleur/image/titre (on affiche alors une par défaut : le vert ; image1.jpg ; titre 1)
else
{
$background = "#badbb7";
$image = "image1.jpg";
$titre = ""titre1"";
}
}
?>
Un petit formulaire permettant de personnaliser le design du site, nous le ferons dans la page index.php
Voici alors le code de la page index.php contenant ce formulaire:
<?php
// on inclut notre fichier de design
include ('design.php');
?>
<html>
<head>
<title>Index du site</title>
</head>
<?php
// on utilise les variables du fichier design.php pour pouvoir afficher le bon design suivant le cookie
echo '<body bgcolor = "',$background,'">';
echo '<img src = "',$image,'">';
echo '$titre';
?>
<br /><br />
Voici un formulaire permettant de personnaliser le design du site :<br />
<!-- on affiche notre formulaire permettant de choisir le design du site -->
<form action = "send_design.php" method = "post">
<p><select name = "couleur">
<option>bleu</option>
<option>rouge</option>
<option>vert</option></p>
</select>
<input type = "submit" value = "Modifier">
<p><select name = "image">
<option>image1</option>
<option>image2</option>
<option>image3</option></p>
</select>
<input type = "submit" value = "Modifier">
<p><select name = "titre">
<option>titre1</option>
<option>titre2</option>
<option>titre3</option></p>
</select>
<input type = "submit" value = "Modifier">
</form>
</body>
</html>
send_design.php enverra le cookie chez le client :
<?php
// on inclut toujours notre fichier de design
include ('design.php');
$expire=365*24*3600;
// on envoie notre cookie de nom DESGIN (donc il sera utilisable via la variable $DESIGN) contenant la couleur, image et titres et choisis (c'est-à-dire le contenu de la variable $couleur)
setcookie ("DESIGN", $_POST['couleur'], $_POST['image'], $_POST['titre'] time() + $expire);
?>
<html>
<head>
<title>Changement de design</title>
</head>
<?
// on utilise les variables du fichier design.php pour pouvoir afficher les bonnes couleurs suivant la couleur du cookie (ou bien la couleur par défaut si le cookie n'existe pas)
echo '<body bgcolor = "',$background,'">';
echo '<img src = "',$image,'">';
echo '$titre';
?>
<br /><br />
Vous avez choisi un site de couleur, image et titre :
<?
echo $_POST['couleur'];
echo $_POST['image'];
echo $_POST['titre'];
?>
<br /><br />
<!-- on affiche notre formulaire permettant de revenir à l'accueil du site -->
<form action = "index.php" method = "post">
<input type = "submit" value = "Retour accueil">
</form>
</body>
</html>
Message édité par teycir le 15-12-2006 à 16:45:07