Noter:
Ajouté/Modifié le 2025-09-27
Visionné 20 fois
Exemple de formulaire PHP : comprendre, traiter et sécuriser
Description
Quand j'ai commencé le développement web, je me suis vite rendu compte que
les formulaires sont partout : page de contact, inscription, commande en ligne… impossible d'y échapper. Pourtant, derrière un simple champ se cachent des enjeux importants : savoir
récupérer les données,
les sécuriser, et parfois même
les décortiquer quand il s'agit de tableaux ou de champs multiples.
Dans cet article, je vais vous expliquer pas à pas comment créer et traiter un formulaire en PHP, en pensant comme quelqu'un qui débute (parce que nous l'avons tous été un jour 😉).
1. La base : un petit formulaire HTML
<form method="post" action="traitement.php">
<label>Nom :</label>
<input type="text" name="nom" required>
<label>Email :</label>
<input type="email" name="email" required>
<label>Message :</label>
<textarea name="message" rows="5"></textarea>
<button type="submit">Envoyer</button>
</form>
👉 Ici, nous avons trois champs différents :
- un champ texte (nom),
- un champ email (email),
- un textarea (message), qui permet les sauts de lignes et de taper un message plus grand.
C'est volontairement minimaliste, mais suffisant pour comprendre la suite.
2. Récupérer les données en PHP
$nom = $_POST['nom'] ?? '';
$email = $_POST['email'] ?? '';
$message = $_POST['message'] ?? '';
Le petit
?? ''
(opérateur de coalescence) évite les erreurs si le champ n'existe pas. C'est une bonne habitude et plus simple que de faire
if(isset($_POST['nom'])).
Disponible à partir de PHP 7.0
3. Sécuriser les données : essentiel pour éviter les mauvaises surprises
C'est
le point critique. Beaucoup de débutants se disent "ça marche, c'est bon"… sauf que non 😅. Sans protection, votre formulaire peut être la porte d'entrée d'un pirate (injection SQL, XSS, spam, etc.).
Quelques bonnes pratiques :
- Échapper les caractères dangereux avant d'afficher les données :
$nom = htmlspecialchars($_POST['nom'] ?? '', ENT_QUOTES, 'UTF-8');
echo "Bonjour $nom";
- Filtrer l'email avec filter_var :
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
die("Email invalide !");
}
- Limiter la taille des champs côté serveur (même si vous mettez un maxlength en HTML, il peut être contourné).
- Protéger le formulaire contre les robots (CAPTCHA ou honeypot).
4. Les différents champs input
En HTML, il existe de nombreux types de champs que l'on retrouve dans les formulaires :
- text : pour du texte classique, il peut servir à tout. Mais l'avantage d'utiliser email par exemple est que le navigateur vérifiera côté client la validité de l'adresse avant d'envoyer le formulaire si le champ est required.
- email : pour une adresse email.
- password : champ masqué pour les mots de passe.
- number, date, file… etc.
👉 Vous trouverez la liste complète ici :
Documentation MDN sur les types d'input.
5. Les input array (données multiples)
Un point qui surprend souvent les débutants, c'est l'utilisation de champs sous forme de tableau :
<input type="text" name="participants[]">
<input type="text" name="participants[]">
<input type="text" name="participants[]">
En PHP, on va récupérer cela sous forme de tableau :
$participants = $_POST['participants'] ?? [];
foreach ($participants as $index => $nom) {
echo "Participant " . ($index+1) . " : " . htmlspecialchars($nom) . "<br>";
}
👉 Très pratique pour des formulaires dynamiques (par exemple, plusieurs numéros de téléphone, plusieurs produits…).
Et on peut même faire du multidimensionnel en combinant les [][]… mais je vous épargne ce casse-tête pour l'instant 😅
6. Autres aspects à connaître quand on débute
- Méthode GET vs POST : utilisez POST pour envoyer des données sensibles (mot de passe, email…). Avec GET, les champs sont ajoutés directement dans l'URL sous forme de paramètres avec "?" et "&".
- Validation côté serveur (indispensable) et côté client (pour le confort de l'utilisateur).
- Séparation du code : HTML pour l'affichage, PHP pour le traitement. Cela évite d'avoir du "spaghetti code".
Mais si vous débutez, vous pouvez aussi très bien avoir tout dans la même page .php. - Redirection après envoi : une fois le formulaire soumis, pensez à rediriger l'utilisateur.
Méthode classique :
header("Location: merci.php");
Ou avec un petit script JS si vous ne voulez pas vous battre avec l'erreur "cannot modify header…":
<script>
setTimeout(function(){
window.location.href = "formulaire.php";
}, 2000);
</script>
Conclusion
Créer un formulaire PHP, ce n'est pas juste mettre des champs et récupérer les valeurs avec $_POST. C'est aussi
penser à la sécurité,
anticiper les erreurs, et avancer étape par étape.
Si vous débutez, commencez petit :
un formulaire de contact bien sécurisé, et ajoutez progressivement des champs plus complexes comme les input array.
Et si vous voulez être sympa avec vos utilisateurs, vous pouvez aussi prévoir que, si le formulaire contient des erreurs, leurs champs soient automatiquement remplis avec ce qu'ils avaient saisi. Ça évite de tout retaper, et croyez-moi, ça fait la différence côté confort 😅
Vous trouverez un petit script sympa ici :
remplissage automatique des champs après erreur.
---
💡
Besoin d'un formulaire professionnel pour votre site ?
Je développe des solutions web personnalisées (formulaires, espaces clients, sites vitrines ou e-commerce).
Si vous souhaitez un formulaire
sur mesure, sécurisé et parfaitement intégré à votre site,
contactez-moi et je m'en occupe.
J'espère que ce script gratuit vous est utile.
Pour soutenir mon travail,
un simple don ou
mettre une note est grandement apprécié.
Votre réussite en ligne commence ici
Vous cherchez à pousser encore plus loin vos idées ou à les concrétiser avec un site internet sur mesure ? Je suis là pour vous aider ! Mon expérience en développement web est à votre disposition.
Que ce soit la création de votre site web pro ou l'apport de fonctionnalités avancées à votre projet, contactez-moi pour en discuter et avoir un devis gratuit personnalisé.
Mon objectif est de vous offrir des solutions sur mesure qui répondent à vos besoins, et votre vision associée à mon expertise donnera vie à votre projet web parfait. Contactez-moi aujourd'hui, je réponds en général en moins d'une heure :
Demander un devis
Réponse rapide !
Commentaires
Ajoutez un commentaire, soyez le premier !
Retour à la liste des scripts