Chapitre 12 : Formulaires et PHP

Apprenez à gérer les formulaires HTML avec PHP, à valider et sécuriser les données utilisateurs.

1. Créer un formulaire HTML

Les formulaires HTML sont essentiels pour interagir avec les utilisateurs. Voici un exemple simple :

<form method="POST" action="traitement.php">
  <label for="nom">Nom :</label>
  <input type="text" name="nom" id="nom" required>

  <label for="email">Email :</label>
  <input type="email" name="email" id="email" required>

  <input type="submit" value="Envoyer">
</form>
Note : L'attribut method="POST" indique que les données seront envoyées par la méthode POST. On peut aussi utiliser GET pour les envoyer dans l'URL.

2. Traitement côté PHP

Dans le fichier traitement.php :

<?php
if ($_SERVER["REQUEST_METHOD"] === "POST") {
  $nom = $_POST["nom"];
  $email = $_POST["email"];

  echo "Bonjour $nom, votre email est $email.";
}
?>
Important : Il est essentiel de valider et sécuriser les données reçues, car un utilisateur malveillant peut envoyer n'importe quoi.

3. Validation des données

Avant d'utiliser les données, il faut les vérifier :

<?php
if ($_SERVER["REQUEST_METHOD"] === "POST") {
  $nom = trim($_POST["nom"]);
  $email = trim($_POST["email"]);

  if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo "Adresse email invalide.";
  } elseif (strlen($nom) < 2) {
    echo "Le nom est trop court.";
  } else {
    echo "Données valides. Bienvenue $nom.";
  }
}
?>

4. Protéger contre les failles (sécurité)

  • XSS : échappez toujours le HTML avec htmlspecialchars()
  • Injection : vérifiez les entrées et utilisez PDO pour les bases de données

Exemple d'échappement :

<?php
echo "Bonjour " . htmlspecialchars($nom);
?>

5. Pré-remplir un formulaire

Très utile en cas d'erreur :

<input type="text" name="nom" value="<?php echo htmlspecialchars($_POST['nom'] ?? ''); ?>">

6. À retenir

  • Les formulaires HTML envoient les données au script PHP via GET ou POST.
  • PHP permet de les récupérer via $_GET ou $_POST.
  • Il faut toujours valider et sécuriser les données saisies.
  • Utilisez htmlspecialchars() pour éviter les attaques XSS.
  • Pré-remplir les champs aide à améliorer l'expérience utilisateur en cas d'erreur.