Récupérer les données de formulaire

Catégorie Découverte du langage PHP < Programmation PHP : Accueil du site

Vous êtes ici : Récupérer les données de formulaire

Publié par Mikiman

On sait maintenant faire pas mal de choses en PHP mais pas encore interagir avec les visiteurs.
Les formulaires (du xHtml) permettent aux visiteurs d'envoyer des données au site qui les traitera à la réception.

Voici un petit exemple de formulaire :

Code source :

<form action="mapage.php" method="post">
<input type="text" name="texte" /><br />
<input type="submit" name="submit" value="Envoyer le formulaire" />
</form>



Nous n'allons pas détailler la méthode de réalisation des formulaires car l'on sortira de la programmation PHP.
On voit qu'il y'a dans ce formulaire 2 inputs dont 1 de type "text" et un de type "submit".
Le input de type "text" à pour nom "texte" et celui de type "submit" à pour nom "submit".

La formulaire est envoyé sur la page "mapage.php" et la méthode d'envoi est "post".
Il existe deux méthodes d'envoi :

  • post => Envoi des données dans le cache
  • get => Envoi des données dans l'adresse de la page



Récupérer des données par la méthode POST


Dans la plupart du temps l'on utilisera cette méthode pour l'envoi des données via un formulaire. Cette méthode est plus sécurisée que la méthode GET car elle n'affiche pas directement dans l'adresse de la page les valeurs envoyées.

Le système de récupération des données par la méthode POST se réalise très simplement :

Code source :

$_POST['nom_du_input']



Il s'agit d'une variable spéciale de PHP "$_POST" qui permet de récupérer les données d'un input du formulaire. Entrez entre les crochets le nom de l’input à sélectionner.

Voici comment l'on fera pour récupérer l’input "texte" du formulaire de tout à l'heure

Code source :

<?php
$valeur 
$_POST['texte'];
echo 
'La valeur du input envoyé est : '.$valeur;
?>



On créer une variable qui contient la donnée du input texte puis on l'affiche.
Notez qu'on aurait pu directement afficher la valeur avec $_POST['texte'] :

Code source :

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



Vous pouvez avoir autant de $_POST['nom_du_input'] dans votre code à condition qu'il soit envoyé par le formulaire.

Récupérer des données par la méthode GET


La méthode à utiliser est très similaire à celle utilisée pour la récupération de données via la méthode POST.
La variable PHP qui permet d'obtenir une donnée envoyée par GET est :

Code source :

$_GET['nom_du_input']



Comme vous pouvez le constater, rien de bien différent que la méthode du POST mis à part que l'on utilise le terme GET désormais.
Imaginons avec ce formulaire :

Code source :

<form action="mapage.php" method="get">
<input type="text" name="texte" /><br />
<input type="submit" name="submit" value="Envoyer la valeur" />
</form>



Le formulaire sera envoyé à la page "mapage.php" mais l'url (adresse web) affiché sera : mapage.php?texte=valeur&submit=Envoyer+la+valeur
Comme vous pouvez le constatez, beaucoup d'informations s'affichent se qui rend cette méthode moins sécurisée que la méthode POST.

Pour récupérer la valeur de l’input "texte" de ce formulaire :

Code source :

<?php
echo $_GET['texte'];
?>



Sécurisé la réception de données


Certains visiteurs malveillants peuvent essayer d'insérer du code Javascript permettant de hacker (détruire un site Internet volontairement) votre site. Nous allons voir comment éviter ce genre de problème.

Il est très important de les utiliser dans vos applications web

La fonction qui permet de sécurisé les données reçues par le formulaire s'appel : htmlentities.
Cette fonction transforme du code en valeur xHTML permettant ainsi d'éviter son exécution.

Voici la méthode d'utilisation :

Code source :

htmlentities($valeur, option)



Il existe différent type d'options :

  • ENT_COMPAT => Convertit les guillemets doubles, et ignore les guillemets simples
  • ENT_QUOTES => Convertit les guillemets doubles et les guillemets simples
  • ENT_NOQUOTES => Ignore les guillemets doubles et les guillemets simples



Je vous conseil personnellement d'utiliser : ENT_QUOTES que j'utiliserai dans les articles PHP.
Si on reprend nos formulaires vu plus haut voici comment l'on sécurisera cela :

Pour la méthode POST

Code source :

<?php
echo htmlentities($_POST['texte'], ENT_QUOTES);
?>



Pour la méthode GET

Code source :

<?php
echo htmlentities($_GET['texte'], ENT_QUOTES);
?>



Utilisez cette méthode pour chaque donnée envoyée par un visiteur.