Médiaforma

PHP MySQL – Transmission de données simples par formulaires

Print Friendly

Dans la section précédente, vous avez appris à transmettre des données par l’URL. Cette technique fonctionne parfaitement, mais elle a deux principaux désavantages :

  • Le nombre de paramètres transmissibles est limité par la longueur de l’URL.
  • Les paramètres transmis apparaissent en clair et l’utilisateur peut, s’il le souhaite, les modifier en agissant sur l’URL.

Pour résoudre ces deux problèmes, on utilise une transmission de données par formulaires.

Voici le code d’un formulaire traditionnel. Lorsque l’utilisateur clique sur le bouton Envoyer, les données contenues dans le formulaire sont transmises au script traitement.php en utilisant la méthode POST :

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Transission de données par un formulaire</title>
  </head>
  <body>
    <form name="MonFormulaire" method="post" action="traitement.php">
      <table><tr><td><label>Prénom</label></td>
      <td><input type="text" name="prenom"></td></tr>

      <tr><td><label>Nom</label></td>
      <td><input type="text" name="nom"></td></tr>

      <tr><td><label>Mot de passe</label></td>
      <td><input type="password" name="mdp"></td></tr>

      <tr><td><label>Age</label></td>
      <td><select name="age">
        <option><20 ans</option>
        <option>20 à 50 ans</option>
        <option>>50 ans</option>
      </select></td></tr>

      <tr><td><label>Observations</label></td>
      <td><textarea name="observations" cols="40" rows="4"></textarea></td></tr>

      <tr><td><input type="submit" name="Nom" value="Envoyer"></td>
      <td><input type="reset" name="Nom" value="Annuler"></td></tr>
      </table>
    </form>
  </body>
</html>

Voici le code du script traitement.php :

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Traitement des données envoyées par formulaire</title>
  </head>
  <body>
  <?php
    $prenom = $_POST["prenom"];
    $nom = $_POST["nom"];
    $motDePasse = $_POST["mdp"];
    $age = $_POST["age"];
    $obs = $_POST["observations"];

    echo "<b>Données reçues :</b><br><br>";
    echo "Prénom : $prenom<br>";
    echo "Nom : $nom<br>";
    echo "Mot de passe : $motDePasse<br>";
    echo "Age : $age<br>";
    echo "Observations : $obs<br>";
    ?>
  </body>
</html>

Exécutons ce code dans WAMP Server. Nous entrons un prénom, un nom et un mot de passe. Nous sélectionnons une tranche d’âge et nous insérons quelques mots dans le textarea. Un clic sur le bouton Envoyer et les données sont transmises au programme traitement.php et affichées à l’aide d’instructions echo.

Pour éviter les problèmes d’injection de type Cross-Site Scripting, pensez à convertir les données entrées par l’utilisateur en appliquant (systématiquement !) la fonction htmlspecialchars() à chacune des données récupérées. Le code du script traitement.php devient alors le suivant :

<?php
  $prenom = htmlspecialchars($_POST["prenom"]);
  $nom = htmlspecialchars($_POST["nom"]);
  $motDePasse = htmlspecialchars($_POST["mdp"]);
  $age = htmlspecialchars($_POST["age"]);
  $obs = htmlspecialchars($_POST["observations"]);

  echo "<b>Données reçues :</b><br><br>";
  echo "Prénom : $prenom<br>";
  echo "Nom : $nom<br>";
  echo "Mot de passe : $motDePasse<br>";
  echo "Age : $age<br>";
  echo "Observations : $obs<br>";
?>
Vous avez aimé cet article ? Partagez-le avec vos réseaux...
 
Comments

No comments yet.

Leave a Reply