CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • 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 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[PHP] Cookies et style

BlackwaterPark
BlackwaterPark
Niveau 19
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
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
Niveau 19
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
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
Niveau 19
20 mai 2015 à 21:06:02

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

Guklam
Guklam
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
Niveau 19
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
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
Niveau 19
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
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é
Pseudo supprimé 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 Pseudo supprimé
BlackwaterPark
BlackwaterPark
Niveau 19
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
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
Niveau 10
25 mai 2015 à 18:16:44

<?= $fond ?>

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

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

Marche tres bien chez moi (toujours sous wamp)

Pseudo supprimé
Pseudo supprimé 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
Niveau 46
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_
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
Niveau 16
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
Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment