Transmettre des données avec les formulaires

Ce matériel couvre les bases de la transmission de données via les formulaires HTML et leur traitement en PHP. Il s’adresse aux étudiants débutants en développement web souhaitant comprendre comment créer des formulaires, récupérer les données envoyées, gérer la sécurité des entrées utilisateurs et traiter l’envoi de fichiers.

D'après le document Transmettre des données avec les formulaires

Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Document source

Transmettre des données avec les formulaires

Web Development · PDF · 21 pages · 2015

Afficher l'aperçu du document

Consulter le document original →

Ce matériel couvre les bases de la transmission de données via les formulaires HTML et leur traitement en PHP. Il s’adresse aux étudiants débutants en développement web souhaitant comprendre comment créer des formulaires, récupérer les données envoyées, gérer la sécurité des entrées utilisateurs et traiter l’envoi de fichiers.

Créer la base du formulaire

En HTML, un formulaire se crée avec la balise <form>. Deux attributs sont essentiels :

  • method : définit la méthode d’envoi des données, généralement post ou get.
  • action : indique la page qui recevra et traitera les données envoyées.

Exemple minimal de formulaire :

<form method="post" action="cible.php">
    <p>
        On insèrera ici les éléments de notre formulaire.
    </p>
</form>

La méthode post est privilégiée car elle ne limite pas la taille des données envoyées et ne les affiche pas dans l’URL. La méthode get transmet les données dans l’URL et est donc moins utilisée pour envoyer des informations sensibles ou volumineuses.

L’attribut action désigne la page PHP qui traitera les données. Par exemple, si le formulaire est dans formulaire.php, l’attribut action="cible.php" signifie que les données seront envoyées à cible.php.

Il est possible que le formulaire s’envoie à lui-même en mettant action="formulaire.php", mais pour simplifier, on utilise ici deux pages distinctes.

Les éléments du formulaire

Un formulaire peut contenir différents types d’éléments pour saisir des données. Voici les principaux :

Les petites zones de texte

On utilise la balise <input type="text" /> pour une zone de texte simple.

Attributs importants :

  • name (obligatoire) : nom de la variable envoyée.
  • value (facultatif) : valeur initiale du champ.

Exemple de formulaire demandant le prénom :

<p>Veuillez taper votre prénom :</p>

<form action="cible.php" method="post">
    <p>
        <input type="text" name="prenom" />
        <input type="submit" value="Valider" />
    </p>
</form>

Dans cible.php, on récupère la donnée ainsi :

<p>Bonjour !</p>

<p>Je sais comment tu t'appelles, hé hé. Tu t'appelles <?php echo $_POST['prenom']; ?> !</p>

<p>Si tu veux changer de prénom, <a href="formulaire.php">clique ici</a>.</p>

Les grandes zones de texte

Pour saisir un texte multiligne, on utilise la balise <textarea> :

<textarea name="message" rows="8" cols="45">
Votre message ici.
</textarea>

Le texte par défaut est placé entre les balises. La variable PHP correspondante sera $_POST['message'].

La liste déroulante

Elle permet de choisir une option parmi plusieurs :

<select name="choix">
    <option value="choix1">Choix 1</option>
    <option value="choix2">Choix 2</option>
    <option value="choix3">Choix 3</option>
    <option value="choix4">Choix 4</option>
</select>

La variable PHP sera $_POST['choix'] contenant la valeur du choix sélectionné.

Pour définir un choix par défaut, ajoutez selected="selected" à l’option souhaitée :

<option value="choix3" selected="selected">Choix 3</option>

Les cases à cocher

Exemple d’une case à cocher :

<input type="checkbox" name="case" id="case" />
<label for="case">Ma case à cocher</label>

Si cochée, $_POST['case'] vaut « on ». Sinon, la variable n’existe pas (test avec isset($_POST['case'])).

Pour cocher par défaut, ajoutez checked="checked" :

<input type="checkbox" name="case" checked="checked" />

Les boutons d’option (radio)

Ils fonctionnent en groupe, tous avec le même nom :

Aimez-vous les frites ?<br />
<input type="radio" name="frites" value="oui" id="oui" checked="checked" /><label for="oui">Oui</label>
<input type="radio" name="frites" value="non" id="non" /><label for="non">Non</label>

La variable PHP $_POST['frites'] contiendra la valeur choisie (« oui » ou « non »).

Les champs cachés

Ils permettent d’envoyer des données invisibles pour l’utilisateur :

<input type="hidden" name="pseudo" value="Mateo21" />

La variable $_POST['pseudo'] aura la valeur « Mateo21 ». Attention, ces champs sont visibles dans le code source et modifiables par l’utilisateur. Il ne faut jamais leur faire confiance.

La sécurité des données reçues : ne jamais faire confiance à l’utilisateur

Les données envoyées par les formulaires (via $_POST ou $_GET) peuvent être modifiées ou falsifiées par l’utilisateur. Il faut donc toujours :

  • Vérifier la présence de toutes les données attendues.
  • Valider leur format (exemple : date au format JJ/MM/AAAA).
  • Nettoyer les données avant affichage pour éviter les injections de code.

Un visiteur peut copier le code HTML de votre formulaire, le modifier (ajout ou suppression de champs) et envoyer des données modifiées à votre page cible. Il est donc impossible de garantir que les données reçues sont celles que vous attendiez.

La faille XSS (Cross-Site Scripting)

Si vous affichez directement les données envoyées par l’utilisateur dans une page HTML, celui-ci peut injecter du code HTML ou JavaScript malveillant.

Exemple dangereux :

<p>Je sais comment tu t'appelles, hé hé. Tu t'appelles <?php echo $_POST['prenom']; ?> !</p>

Si l’utilisateur entre <script>alert('Badaboum')</script> dans le champ prénom, ce code JavaScript sera exécuté par tous les visiteurs de la page.

Pour éviter cela, il faut échapper les caractères HTML avec la fonction PHP htmlspecialchars() :

<p>Je sais comment tu t'appelles, hé hé. Tu t'appelles <?php echo htmlspecialchars($_POST['prenom']); ?> !</p>

Cette fonction transforme les chevrons < et > en entités HTML &lt; et &gt;, empêchant ainsi l’exécution de code.

Il est conseillé d’utiliser htmlspecialchars() sur toutes les données utilisateur affichées, comme les messages, pseudos, signatures, etc. Alternativement, on peut utiliser strip_tags() pour supprimer les balises HTML.

L’envoi de fichiers via les formulaires

Les formulaires peuvent aussi permettre aux visiteurs d’envoyer des fichiers (images, documents, etc.).

Le formulaire d’envoi de fichier

Pour cela, il faut ajouter l’attribut enctype="multipart/form-data" à la balise <form> :

<form action="cible_envoi.php" method="post" enctype="multipart/form-data">
    <p>Formulaire d'envoi de fichier :<br />
    <input type="file" name="monfichier" /><br />
    <input type="submit" value="Envoyer le fichier" />
    </p>
</form>

Le traitement du fichier en PHP

Lorsqu’un fichier est envoyé, PHP crée une variable $_FILES['monfichier'] qui est un tableau contenant :

VariableSignification
$_FILES['monfichier']['name']Nom original du fichier envoyé
$_FILES['monfichier']['type']Type MIME du fichier (ex. image/gif)
$_FILES['monfichier']['size']Taille du fichier en octets
$_FILES['monfichier']['tmp_name']Chemin temporaire du fichier sur le serveur
$_FILES['monfichier']['error']Code d’erreur (0 si aucun problème)

Pour valider l’envoi, on procède ainsi :

  1. Vérifier que le fichier a bien été envoyé et qu’il n’y a pas d’erreur :
<?php
if (isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0) {
    // suite du traitement
}
?>
  1. Vérifier que la taille ne dépasse pas 1 Mo (environ 1 000 000 octets) :
if ($_FILES['monfichier']['size'] <= 1000000) {
    // suite du traitement
}
  1. Vérifier que l’extension du fichier est autorisée :
<?php
$infosfichier = pathinfo($_FILES['monfichier']['name']);
$extension_upload = $infosfichier['extension'];
$extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
if (in_array($extension_upload, $extensions_autorisees)) {
    // suite du traitement
}
?>
  1. Si tout est validé, déplacer le fichier du dossier temporaire vers un dossier définitif avec move_uploaded_file().

Glossaire des termes clés

  • formulaire HTML : zone interactive permettant à un utilisateur d’envoyer des données à un serveur.
  • méthode POST : méthode d’envoi des données via HTTP, les données ne sont pas visibles dans l’URL.
  • méthode GET : méthode d’envoi des données via HTTP, les données sont visibles dans l’URL.
  • attribut action : définit la page qui reçoit et traite les données du formulaire.
  • zone de texte : champ permettant de saisir une courte chaîne de caractères.
  • textarea : zone de saisie multiligne.
  • liste déroulante (select) : menu déroulant proposant plusieurs choix.
  • case à cocher (checkbox) : élément permettant de sélectionner ou non une option.
  • bouton d’option (radio) : groupe de boutons où une seule option peut être sélectionnée.
  • champ caché (hidden) : champ invisible à l’utilisateur mais envoyé avec le formulaire.
  • faille XSS : vulnérabilité permettant d’injecter du code malveillant via les données utilisateur.
  • htmlspecialchars() : fonction PHP qui échappe les caractères spéciaux HTML pour éviter l’exécution de code.
  • enctype="multipart/form-data" : attribut nécessaire pour envoyer des fichiers via un formulaire.
  • $_FILES : tableau PHP contenant les informations sur les fichiers envoyés via un formulaire.
  • move_uploaded_file() : fonction PHP qui déplace un fichier téléchargé vers un emplacement définitif.

Points clés à retenir

  • Un formulaire HTML utilise la balise <form> avec les attributs method et action.
  • La méthode post est la plus utilisée pour transmettre des données de formulaire.
  • Chaque champ du formulaire doit avoir un attribut name pour que PHP puisse récupérer sa valeur.
  • Les données envoyées par l’utilisateur ne sont jamais fiables : il faut toujours les valider et les nettoyer.
  • La faille XSS est une menace majeure : utiliser systématiquement htmlspecialchars() pour afficher les données utilisateur.
  • Pour envoyer des fichiers, le formulaire doit avoir enctype="multipart/form-data" et PHP utilise $_FILES pour gérer les fichiers reçus.
  • Il est indispensable de vérifier la taille, l’extension et l’absence d’erreur avant d’accepter un fichier uploadé.

Partager

Commentaires

Aucun commentaire pour le moment. Posez la première question.

Les commentaires sont relus avant publication. Votre e-mail n'est jamais affiché.

← Toutes les révisions

dans le champ","datePublished":"2026-08-27T17:15:08.063Z","dateModified":"2026-08-27T17:15:08.064Z","publisher":{"@type":"Organization","name":"UniversityLib","url":"https://www.universitylib.com/"},"isBasedOn":{"@type":"DigitalDocument","name":"Transmettre des données avec les formulaires","url":"https://www.universitylib.com/fr/documents/transmettre-des-donnees-avec-les-formulaires-e5b90bb93b"},"about":"Web Development"}