CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : [PHP] Cookies et style

DébutPage précedente
1
Page suivantePage suivante
BlackwaterPark BlackwaterPark
MP
Niveau 15
20 mai 2015 à 20:33:40

Salut!
Je dois faire l'exercice suivant:
créer un formulaire en PHP permettant de saisir les codes couleurs préférés de l'utilisateur (pour le background et le texte). En appuyant sur le bouton envoyer, on arrive sur une page d'accueil dont le style reprend les valeurs saisies précédemment.

A ce stade j'arrive à générer les cookies contenant les chaînes de caractères saisies dans le formulaire (avec un GET).

Je suis censé générer une page en PHP, mon prof a spécifié que l'on devait configurer le style "en ligne".
Cependant, comment "récupérer" le contenu des cookies pour spécifier le style?
un simple "color-background=$fond" ($fond étant la chaîne contenue dans un cookie) suffit? J'avoue me perdre un peu dans tout ça. :-(
Si quelqu'un a des idées, pistes ou éclaircissements je suis preneur! :)
Merci!
Bwp

Message édité le 20 mai 2015 à 20:34:06 par BlackwaterPark
Darkandgel Darkandgel
MP
Niveau 10
20 mai 2015 à 20:50:25

Jamais fait mumuse avec les cookies, mais si rien dans ton énoncée ne t'oblige a les utiliser, tu peux te regarder du coté des sessions

Sinon, je pense que tu devrais te pencher sur $_COOKIE (a mon avis, apres avoir jeté un ptit coup d'oeil a la doc, un simple $_COOKIE['ton_nom_de_cookie'] devrait suffire a retrouver ta valeur)

BlackwaterPark BlackwaterPark
MP
Niveau 15
20 mai 2015 à 20:58:32

Le sujet spécifie bien les cookies!
J'ai défini mes cookies comme suivant:
$fond=$_POST['fond'];
$texte=$_POST['texte'];
$expir=time() + 2*30*24*3600;
setcookie("fond",$fond,$expir);
setcookie("texte",$texte,$expir);
(je passe les détails du POST).

Si j'en crois ton raisonnement, dans ma nouvelle page PHP il me suffit de préciser:
$GET_COOKIE("fond");
$GET_COOKIE("texte");

puis

<body bgcolor="$fond">
Est-ce suffisant?
Je vais essayer de bidouiller tout ça. merci à toi!

Darkandgel Darkandgel
MP
Niveau 10
20 mai 2015 à 21:03:16

C'est presque ça, sauf que c'est $_COOKIE["nom"], et pas $GET_COOKIE("nom")

Pour faire simple $_COOKIE est une variable de type tableau associatif (c'est un peu plus compliqué que ça, mais tu verras peut etre ça plus tard)

BlackwaterPark BlackwaterPark
MP
Niveau 15
20 mai 2015 à 21:06:02

C'est l'exercice suivant en effet!
Un grand merci à toi :ok:

Guklam Guklam
MP
Niveau 10
20 mai 2015 à 21:31:51

<body bgcolor="$fond">

pas très beau ça par contre.

<body style="background: <?php echo $fond; ?>;">

c'est plus propre. :hap:

BlackwaterPark BlackwaterPark
MP
Niveau 15
25 mai 2015 à 14:59:08

ça va surement vous paraitre bête mais j'y arrive pas :-(

<?php

if(!isset($_COOKIE['fond']) AND !isset($_COOKIE['texte']) )
{
$fond=$_POST['fond'];
$texte=$_POST['texte'];
$expir=time() + 2*30*24*3600;
setcookie("fond",$fond,$expir);
setcookie("texte",$texte,$expir);
}
else
{
$fond=$_COOKIE['fond'];
$texte=$_COOKIE['texte'];
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Couleurs du site</title>
<body style="background: <?php echo $fond; ?>; color:<?php echo $text; ?>">
<form method="post" action="ch12exo1.php">
<fieldset>
<legend>Choisissez vos couleurs</legend>
<label>Couleur de fond
<input type="text" name="fond" />
</label><br /><br />
<label>Couleur de texte
<input type="text" name="texte" />
</label><br />
<input type="submit" value="Envoyer" />
<input type="reset" value="Effacer" />
</fieldset>
</form>
</body>
</html>

la page se recharge mais rien n'est pris en compte.

Darkandgel Darkandgel
MP
Niveau 10
25 mai 2015 à 15:42:19

Bon, deja ici : <?php echo $text; ?> tu affiches une variable $text alors que ta variable definie plus haut s'appelle $texte

Ensuite, tu entres quoi dans tes champs comme valeurs ?

Chez moi le code suivant fonctionne avec les valeurs red et green (enfin, il pete quand tu arrives dessus pour la 1ere fois, mais une fois que tu rentres les valeurs c'est bon)

<?php
if(!isset($_COOKIE['fond']) AND !isset($_COOKIE['texte']) )
{
$fond=$_POST['fond'];
$texte=$_POST['texte'];
$expir=time() + 2*30*24*3600;
setcookie("fond",$fond,$expir);
setcookie("texte",$texte,$expir);
}
else
{
$fond=$_COOKIE['fond'];
$texte=$_COOKIE['texte'];
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Couleurs du site</title>
<body style="background: <?php echo $fond; ?>; color:<?php echo $texte; ?>">
<form method="post" >
<fieldset>
<legend>Choisissez vos couleurs</legend>
<label>Couleur de fond
<input type="text" name="fond" />
</label><br /><br />
<label>Couleur de texte
<input type="text" name="texte" />
</label><br />
<input type="submit" value="Envoyer" />
<input type="reset" value="Effacer" />
</fieldset>
</form>
</body>
</html> 
Message édité le 25 mai 2015 à 15:45:46 par Darkandgel
BlackwaterPark BlackwaterPark
MP
Niveau 15
25 mai 2015 à 15:46:37

Ah bien vu!
Je saisit soit des valeurs HEX soit des noms de couleurs "normalisées" (aca red, RoyalBlue...) Je n'écris pas bêtement "rouge" ou "vert à pois rose", si ça peut te rassurer. :noel:
EDIT : je viens de tester ton code mis en quote mais toujours pareil : la page se recharge et le style n'est pas modifié

Message édité le 25 mai 2015 à 15:48:48 par BlackwaterPark
Darkandgel Darkandgel
MP
Niveau 10
25 mai 2015 à 15:48:49

Sinon, je ne sais pas si c'est pris en compte dans ton exo, mais ton truc n'est pas valide html5 (je pense que c'est a cause des inputs dans les labels)

EDIT : t'es sur d'appeller la bonne page ? Parce que chez moi ça marche nickel)

Message édité le 25 mai 2015 à 15:49:40 par Darkandgel
Pseudo supprimé
Niveau 10
25 mai 2015 à 15:49:33

Le 20 mai 2015 à 21:31:51 Guklam a écrit :
<body bgcolor="$fond">

pas très beau ça par contre.

<body style="background: <?php echo $fond; ?>;">

c'est plus propre. :hap:

Perso je préfère :

<body style="background: <?= $fond ?>;">
Message édité le 25 mai 2015 à 15:49:56 par
BlackwaterPark BlackwaterPark
MP
Niveau 15
25 mai 2015 à 15:52:12

A priori oui j'appelle la bonne page. Ici je veux recharger la même page en prenant en compte la modification du style;
le
<form method="post" action="ch12exo1.php">
est bien le nom du fichier contenant le script et le html.

Darkandgel Darkandgel
MP
Niveau 10
25 mai 2015 à 15:54:05

Euh... A tous hasards, ton navigateur accepte bien les cookies ? :D

Parce que le code est bon

Message édité le 25 mai 2015 à 15:57:05 par Darkandgel
Guklam Guklam
MP
Niveau 10
25 mai 2015 à 18:16:44

<?= $fond ?>

Déjà essayé et ça me retourne une erreur ( sous wamp )

Darkandgel Darkandgel
MP
Niveau 10
25 mai 2015 à 18:42:01
<?php $lol = "loooooool";?>
<?= $lol ?>

Marche tres bien chez moi (toujours sous wamp)

Pseudo supprimé
Niveau 10
26 mai 2015 à 13:19:49

Le 25 mai 2015 à 18:16:44 Guklam a écrit :
<?= $fond ?>

Déjà essayé et ça me retourne une erreur ( sous wamp )

T'es sur quelle version php ?

Tanil Tanil
MP
Niveau 36
26 mai 2015 à 13:50:35

Déjà tu as un problème lors de la première visite de la page. Et ça me parait bizarre que tu ne nous parles pas d'une erreur. Vérifie que les erreurs sont bien affichées.

Et cette erreur est la suivante : au niveau de ton if, tu testes l'existence (ou plutôt la non-existence) de tes cookies. S'ils n'existent pas, tu prends les valeurs du formulaire. Sauf qu'à ce stade tu n'as pas de valeurs. Tes variables $fond et $texte sont vides. Il faudrait commencer par leur donner une variable par défaut. Il faut aussi tester l'existence de tes variables $_POST :


$fond = #fff;
$texte = #000;

if(!isset($_COOKIE['fond'], $_COOKIE['texte']) && isset($_POST['fond'], $_POST['texte'])
{
$fond=$_POST['fond'];
$texte=$_POST['texte'];
$expir=time() + 2*30*24*3600;
setcookie("fond",$fond,$expir);
setcookie("texte",$texte,$expir);
}
else
{
$fond=$_COOKIE['fond'];
$texte=$_COOKIE['texte'];
}

Commence par modifier ça, au moins ça évite les erreurs de variable unknown et autres.

Evoli_ Evoli_
MP
Niveau 10
26 mai 2015 à 16:20:47

C'est pas un peu dangereux de se servir des cookies comme ça? Surtout en sachant que c'est facilement modifiable... Bon pas forcément dans ce cas de figure je suppose mais quand même

deepblue deepblue
MP
Niveau 13
26 mai 2015 à 17:48:30

Si tu test le contenu, tu ne risques rien. Mais le cas présent, vous avez une faille type XSS dans votre code....

https://gist.deblan.org/fr/view/556495996d003

Message édité le 26 mai 2015 à 17:48:47 par deepblue
DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : Thymotep
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment