article(s) dans votre panier VOIR

Tuto PHP/MySQL | Transmission de données simples par formulaires

  • Vidéo 81 sur 158
  • 4h43 de formation
  • 158 leçons

Un contenu flash devrait s'afficher ici. Votre navigateur ne comporte pas de plugin flash, ou il ne s'est pas correctement initialisé.

Vous pouvez télécharger le plugin flash depuis le site d'Adobe à l'adresse suivante : http://get.adobe.com/flashplayer/.

Pour accéder à la suite de cette formation, vous devez vous abonner.
previous
summary
resume
next
play
Transmission de données simples par formulaires
00:00 / 02:38
HD
fullscreen
Je m’abonne
à partir de 16,6 € / mois
  • Visionnage en ligne
  • Accès illimité à toutes nos formations
OU
J'achète uniquement
la formation
49,90€
  • Téléchargement + VOD à vie
  • Accès uniquement à cette formation

Sommaire de la formation

Détails de la formation

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;

    $nom = $_POST;

    $motDePasse = $_POST;

    $age = $_POST;

    $obs = $_POST;

    

    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);

  $nom = htmlspecialchars($_POST);

  $motDePasse = htmlspecialchars($_POST);

  $age = htmlspecialchars($_POST);

  $obs = htmlspecialchars($_POST);

    

  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>";

 

?>