En PHP, récupérer les variables transmises par un formulaire est un jeu d'enfant.

Prenons un exemple : Créons un formulaire permettant au visiteur de laisser un commentaire sur le site.

1- Formulaire HTML

Exemple : Que pensez-vous de ce site ?

  1. <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  2. <p>Votre nom :<br />
  3. <input type="text" name="nom" size="40" /><br />
  4. Commentaire :<br />
  5. <textarea name="texte" cols="40" rows="3"></textarea>
  6. </p>
  7. <input type="submit" name="Submit" value="Envoyer">
  8. </form>

Rien de bien compliqué, c'est juste du code HTML. On utilise la méthode post et on met le nom du fichier PHP que l'on veut appeler dans "action" (PHP_SELF renvoie le chemin & nom du fichier courant). Par contre, donnez un nom explicite aux champs du formulaire, puisque PHP utilisera ces noms pour les variables.

2- Récupérer les variables transmises

Une fois le formulaire envoyé, il faut récupérer les informations transmises.
Le code du fichier script est :

  1. <html>
  2. <body>
  3. <h4>Merci <?php echo $_POST['nom']; ?></h4>
  4. <?php
  5. echo '<p>Votre commentaire : ' . $_POST['texte'] . '</p>';
  6. ?>
  7. </body>
  8. </html>

L'instruction echo permet d'afficher le texte voulu. On peut évidemment y mettre des balises html.
NB : Si votre texte contient une apostrophe ('), ajoutez un antislash devant (\). Ex:

Pour récupérer les variables transmises, on utilise les tableaux $_POST et $_GET (en fonction de la méthode d'envoi du formulaire, post dans notre exemple).

On peut compléter le script, en rajoutant un test sur les champs du formulaire. Si l'utilisateur ne remplit pas les champs, on affiche un message d'erreur.
Nous allons également utiliser la fonction htmlentities pour afficher les caractères spéciaux du texte entré sous forme html.

  1. <html>
  2. <body>
  3. <?
  4. if(!empty($_POST['nom']) and !empty($_POST['texte'])){ // si les champs sont remplis
  5. echo '<h4>Merci ' . htmlentities($_POST['nom']) . '</h4>';
  6. echo '<p>Votre commentaire : ' . htmlentities($_POST['texte']) . '</p>';
  7. }else{
  8. echo '<h4>Erreur !</h4>';
  9. echo '<p>Vous devez remplir correctement tous les champs</p>';
  10. }
  11. ?>
  12. </body>
  13. </html>