BUT1-WEB-Public/2TDFormSansCorrection.md

5.0 KiB

TD Formulaire (intro).

Exo (Quizz)

  • Pour transmettre l'information d'un formulaire, je peux utiliser
    • get
    • set
    • post
    • lock
    • mock
  • Quelle forme est la plus adaptée si je veux pouvoir mettre un marque-page?
  • Quelle forme est la plus adaptée si je veux transmettre un mot de passe? pourquoi?
  • Quel élément de formulaire permet de choisir exactement une option?
  • Quel élément de formulaire permet de choisir plusieurs options?

correction

  • get, post
  • get
  • post, car la valeur du mdp sera caché alors qu'avec get elles apparaitra dans l'url.
  • radio
  • checkbox

Exo (Syntaxe)

Notre page web contient ceci.

       <form action="salut.php" method="get">
             ton surnom : <input type="text" name="toto">
       </form>

Nous souhaitons que salut.php (ci-dessous) affiche salut suivi du surnom entré à la page précédente.

à corriger

       <html>
          <body>
       
              Welcome <?php echo "toto"; ?>
       
          </body>
       </html>

correction

       <html>
            <body>
       
            Welcome <?php echo $_GET["toto"]; ?>
       
            </body>
       </html>

Exo (Un jeu)

On souhaite coder le jeu super ludique suivant. L'utilisateur doit écrire une ligne de texte sur une première ligne et une autre ligne de texte sur une seconde ligne qui soit la traduction en rot13.

Pour ceci PhP offre une méthode intéressante str_rot13(string $string): string

Ainsi le fichier suivant :

       <!DOCTYPE html>
       <html>
           <body>
       
               <?php
                  echo str_rot13("Salut toto, rot13 c'est nul comme crypto");
                  echo "<br>";
                  echo str_rot13("Fnyhg gbgb, ebg13 p'rfg ahy pbzzr pelcgb");
               ?>
       
          </body>
       </html>

va afficher ceci sur le navigateur.

       Fnyhg gbgb, ebg13 p'rfg ahy pbzzr pelcgb
       Salut toto, rot13 c'est nul comme crypto 

Pour le jeu on veut donc un formulaire

       <h1>Le Jeu du rot13</h1>
           <form action="rot13.php" method="get">
               <label>le clair :</label>
               <br>
               <input type="text" name="clair">
               <br>
               <label>le chiffré :</label>
               <br>
               <input type="text" name="chiffre">
               <br>
               <br>
               <input type="submit" value="Jouer">
           </form>

Détaillez les parties intéressates du fichier rot13.php qui permettent d'afficher win ou loss (en rot13 évidemment) selon que le joueur a gagné ou perdu en dessous du texte chiffré initial. Exemple si je soumet

       le clair :
       Salut toto
       le chiffré :
       Fnyhg gbgb

alors le navigateur va afficher

       Fnyhg gbgb
       ???

où ??? correspond à win en rot13.

Question bonus : quelle url permet-elle d'afficher win en rot13 en dessous de win?

Exo

  • Proposez un page 'get.php' qui affiche une liste sous la forme variable=valeur de toutes les variables reçues par la méthode get. (NB. vous pouvez la tester en éditant directement l'url).
  • Proposez un page 'post.php' qui affiche une liste sous la forme variable=valeur de toutes les variables reçues par la méthode post. (NB. vous pouvez la tester en utilisant un formulaire qui pointe vers cette page via la méthode post, par exemple en changeant légèrement le formulaire du jeu rot13 ci-dessus).
  • Proposez une page 'getToPost.php' qui possède un boutton redirect qui une fois activé transmet à une page 'post.php' les variables qu'elle a reçu via la méthode get.
  • Testez votre tuyauterie complète en branchant dans l'ordre 'get.php' vers 'getToPost.php' puis 'post.php'.
  • En option, proposez une page 'PostToget.php'.

Exo (string et tableaux associatifs)##

introduction quelques méthodes pour les string.

    explode(string $separator, string $string, int $limit = PHP_INT_MAX): array

Pour obtenir le tableau des mots d'une phrase :

    explode(" ","bonjour tout le monde")

Pour faire la différence entre deux tableaux

   array_diff(array $array, array ...$arrays): array

Exemple :

   <?php
   $a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
   $a2=array("e"=>"red","f"=>"green","g"=>"blue");
   
   $result=array_diff($a1,$a2);
   print_r($result);
   ?>

va afficher

   Array ( [d] => yellow ) 

Question. Écrire un programme PhP qui prend une phrase en argument, enlève les mots pas intéressants ou vulgaires (par exemple "le la les de du au à quel quelle il elle tu je nous vous ils mais ou et donc or ni car zouave étudiant athlète") et compte le nombre de mots.

On affiche les mots sous forme d'un nuage de mot du pauvre en changeant la taille des mots en fonction de leur fréquence. Par exemple, dix fois leur fréquence en pixel:

    <p style="font-size:30px">Trendy</p>
    <p style="font-size:60px">Cool</p>