Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 1 livre papier acheté 
= la version en ligne automatiquement offerte. Cliquez ici
  1. Livres et vidéos
  2. PHP et JavaScript
  3. Transmettre des données via les formulaires
Extrait - PHP et JavaScript Dynamisez vos sites et applications web (avec exercices et corrigés)
Extraits du livre
PHP et JavaScript Dynamisez vos sites et applications web (avec exercices et corrigés) Revenir à la page d'achat du livre

Transmettre des données via les formulaires

Description d’un formulaire

Vous avez certainement déjà saisi des informations pour vous connecter à un site web, pour dialoguer sur un blog, pour demander des compléments d’information sur un site marchand, etc.

Pour échanger ces informations, vous avez utilisé des formulaires, ils sont partout sur les sites web, c’est le meilleur moyen pour transmettre des données.

Vous verrez dans les paragraphes suivants que pour récupérer les informations saisies par le visiteur, on utilisera essentiellement la méthode POST (on abordera succinctement la méthode GET, vue au chapitre précédent).

Le but de ce chapitre n’est pas de concevoir des formulaires, mais d’en récupérer les données transmises au serveur.

La méthode POST

Afin de comprendre la transmission des données via les formulaires, on va suivre un exemple à partir d’un petit formulaire de contact, qui permettra au visiteur de saisir quelques données le concernant et de poser une question.

Voici l’affichage que l’on souhaite obtenir :

images/11RI01.png

Le formulaire est écrit en HTML, en voici le code source :


<h2>Formulaire de contact</h2> 
 
<form action="ch11_traitement_du_formulaire.php" method="post"> 
    Nom<br /><input type "text" name="nom"><br /><br /> 
    Prenom<br /><input type "text" name="prenom"><br /><br /> 
    Question<br /><textarea rows="5" cols="40" 
name="question"></textarea><br /> 
    <br /> 
    <input type="submit" name="valider" value="Valider"> 
</form>
 

On va s’attarder un peu sur la balise <form> du formulaire et ses deux attributs importants : action et method :

  • Action : cet attribut contient tout simplement le nom de la page PHP qui sera appelée lorsque le visiteur aura cliqué sur le bouton Valider, et c’est dans cette page que l’on pourra récupérer les données...

$_POST avec les autres types d’éléments

Dans l’exemple ci-dessus, on a vu les zones de texte classiques et les grandes zones de texte (textarea). Il en existe bien d’autres que vous allez découvrir ci-après.

1. Type mot de passe

La zone de texte mot de passe est une zone de type texte qui permet de cacher la saisie du visiteur (tous les caractères sont remplacés par des astérisques (*)), voyez plutôt :

images/11RI04.png

Pour obtenir cet affichage, il faudra écrire en HTML :


Mot de passe<br /><input type="password" name="motdp">
 

Et pour récupérer la valeur, il faudra écrire en PHP :


<?php 
  echo $_POST['motdp']; 
?>
 

Ceci affichera le mot de passe que vous avez saisi.

2. Type Liste déroulante à choix unique

Vous avez déjà tous eu à choisir une valeur dans une liste déroulante comme celle ci-dessous :

images/11RI05.png

Le code HTML de cet exemple :


<h2>Formulaire de contact</h2> 
    <form action="ch11_ex03_post.php" method="post"> 
           Quel sport pratiquez-vous?<br /> 
           <select name="choix_sport"> 
           <option value="Football">Football</option> 
           <option value="Tennis">Tennis</option> 
           <option value="Rugby">Rugby</option> 
           <option value="Autre">Autre</option> 
    </select> 
</form>
 

Et pour récupérer la valeur sélectionnée, il faudra utiliser le tableau $_POST comme ceci :


<?php 
  echo $_POST['choix_sport']; 
?>
 

Ce code affiche...

Prévention des failles de sécurité

On l’a déjà évoqué plusieurs fois, il est impératif de bien vérifier le contenu de ce que saisit le visiteur dans les formulaires.

Imaginez le champ Nom, rien n’empêche le visiteur de saisir du code HTML, du code JavaScript ou autre chaîne de caractères totalement inattendue et potentiellement dangereuse.

Pour les champs numériques ou de type date, le contrôle est simple à réaliser. Une valeur minimale attendue, une valeur maximale attendue, un format bien spécifique pour une date, toutes ces conditions sont facilement gérables à l’aide de fonctions offertes par PHP (min, max, int, date, etc.).

En revanche, pour les chaînes de caractères, c’est plus complexe. Mais heureusement, PHP met à disposition des fonctions qui permettent de prévenir les mésaventures, en effet du code JavaScript permettrait par exemple de récupérer des données pertinentes dans vos cookies (login, mot de passe, etc.).

La fonction à utiliser pour éviter tout désagrément sur les chaînes de caractères est htmlspecialchars, elle permet "d’échapper" (de remplacer) toutes les balises HTML par d’autres caractères, ce qui provoquera l’affichage du code HTML plutôt que son interprétation....