Recevoir gratuitement et régulièrement la lettre d'information notre-planete.info

Le site de référence en environnement,
développement durable et
changements climatiques
english deutsch   accueil recommander plan du site imprimer Les formulaires : la méthode POST
 
connexion  Se connecter
Login (e-mail)  
Mot de passe mémoriser
 
[ Devenir membre ] [ Retrouver vos identifiants ]
[ votre publicité ci-dessus ]

Les formulaires : la méthode POST

Intérêt

L'un des intérêts majeurs de PHP est sa capacité à exploiter les données qui sont fournies par un internaute via les formulaires HTML bien connus.
Ces formulaires sont notamment utilisés pour s'identifier sur un site, répondre dans un forum de discussions, ajouter des articles dans un blog, faire un commentaire sur un article... Bref, à chaque fois que vous participez à l'enrichissement d'un site Internet, vous fournissez des informations via un formulaire. PHP récupère ensuite ces données pour les insérer dans une base de données, pour les exploiter, les afficher...

Fonctionnement

Un formulaire est constitué de champs et de contrôles : zones de texte, boutons radio, cases à cocher, listes déroulantes... Chacun de ces éléments se caractérise par un attribut "name" qui définira tout simplement le nom de la variable à récupérer en PHP avec la valeur rentrée par l'utilisateur.
Ainsi, rappelons qu'un formulaire HTML se définit avec les balises <form> et </form>. L'attribut "action" de cette balise permet de spécifier la page qui traitera les données fournies dans le formulaire par l'internaute ; l'attribut "method" la méthode de transmission (GET ou POST).

Exemple simple de formulaire :

<form action="resultat.php" method="post">
Entrez votre prénom : <input type="text" name="prenom" />
<input type="submit" value="valider" />
</form>

Ce qui donnera sur votre navigateur, si vous rentrez "martial" :

Entrez votre prénom :

Sur cet exemple, l'utilisateur a la possibilité de spécifier une seule information : son prénom, cette donnée sera exploitable dans la page resultat.php sous la forme d'une variable $_POST["prenom"] (composée de l'attribut "name" de la zone de texte à remplir) dont la valeur sera égale à la chaîne de caractères entrée.
Ainsi on aura par exemple dans la page resultat.php :

<?php
echo "Prénom tapé par l'utilisateur : ".$_POST['prenom'];
?>

Prénom tapé par l'utilisateur : martial

Une variable dite superglobale est alors automatiquement créée et exploitable dans le fichier resultat.php et uniquement dans celui-ci.
Tous les contrôles de formulaire qui possèdent un attribut "name" engendrent la création d'une variable superglobale dont le nom est $_POST["nom de la variable"] et la valeur fonction des renseignements saisis par l'utilisateur. Nous remarquerons l'emploi de la syntaxe $_POST qui rappelle que la variable a été construite à partir de la méthode POST.
Notons enfin que l'on peut écrire indistinctement : $_POST['prenom'], $_POST["prenom"] ou $_POST[prenom].

La méthode POST

Deux méthodes peuvent être utilisées dans l'envoi de données via les formulaires, la méthode GET et POST. Nous préconisons l'emploi de la méthode POST car elle cache les informations transmises (qui transiteraient par l'URL dans le cas de la méthode GET). De plus, elle permet d'envoyer des données importantes en taille (la méthode GET se limite à 255 caractères) et assure la gestion de l'envoi de fichiers.
La méthode GET est utilisée par défaut lorsque l'on utilise l'URL pour faire passer des variables, ce que nous aborderons plus loin sur cette page.

Exemples de contrôles et de champs de formulaires

Voici un exemple de traitement des variables qui émanent des différents contrôles et champs renseignés par un internaute sur un formulaire d'échange de liens.

<form method="POST" action="traitement.php">
Votre adresse e-mail<input type="text" name="mail" value="adresse e-mail" size="30" maxlength="55">
<input type="checkbox" NAME="mailing" value="oui" checked> abonnement gratuit à notre-planete.info
Description de votre site<br>
<textarea name="description" rows="3" cols="60"></textarea><br>
Type d'échange souhaité :
<select name="demande">
<option selected="selected" value="echange de liens">Echange de liens</option>
<option value="partenariat">Partenariat</option>
</select>
Dans quelle rubrique souhaitez-vous être présent ?<br>
<input type="radio" name="rubrique" value="environnement" />Environnement / Ecologie<br>
<input type="radio" name="rubrique" value="geographie" />Géographie<br>
<input type="radio" name="rubrique" />Photos
</form>

Ce qui donne sur votre navigateur, une fois qu'un demandeur a rempli le formulaire :

Votre adresse e-mail
abonnement gratuit à notre-planete.info

Description de votre site



Type d'échange souhaité :

Dans quelle rubrique souhaitez-vous être présent ?
Environnement / Ecologie
Géographie
Photos

Nous remarquerons que l'appel à la page de traitement des données est "traitement.php", on peut tout à fait appeler la même page en utilisant une variable globale PHP intitulée $_SERVER['PHP_SELF'] qui signifie la page en cours.
Ainsi, l'affichage du formulaire et l'exploitation de ses résultats sera opéré sur la même page. Ceci implique que dans le code PHP, un test soit effectué pour savoir si le formulaire a été rempli ou non par exemple en testant si une des variables du formulaire a été déclarée avec la fonction isset().
Le code qui permet de récupérer les différentes valeurs saisies par l'utilisateur est le suivant :

<?php
$mail 
$_POST["mail"];
echo 
"votre adresse e-mail est : $mail&lt;br />";
$mailing = (isset($_POST["mailing"])? "oui" "non");
echo 
"Avez-vous souhaité vous inscrire sur la lettre d'informations ? $mailing&lt;br />";
$description htmlentities($_POST["description"],ENT_QUOTES);
echo 
"et sa description est la suivante : &lt;br />".nl2br($description)."&lt;br />";
$rubrique =  $_POST["rubrique"];
echo 
"pour la rubrique ".$rubrique;
?>

Nous remarquons que :
  • pour la case à cocher la variable prend la valeur true ou false si la case a été cochée ou non. Un simple test (écrit sous une forme raccourcie ici) attribue à la variable mailing la valeur "oui" ou "non". En fait, si la case a été cochée, la variable "name" correspondante est déclarée, sinon elle n'existe pas ;
  • l'attribue "name" des boutons radios est le même car ils appartiennent à une même liste de choix. Le bouton radio sélectionné crée une variable nommée $_POST["rubrique"] qui est égale à la valeur notée dans l'attribut "value" si il existe, sinon sa valeur sera égale à la chaîne de caractères spécifiée entre les balises <input> et </input> ;
  • la liste d'options fonctionne de la même façon pour la valeur de la variable $_POST["demande"], l'attribue "name" étant déclaré dans la balise <select>
  • nous utilisons la fonction htmlentities() qui transforme certains caractères du texte entré par l'utilisateur dans la zone de texte en d'autres qui ne permettront pas l'exécution de code HTML par une personne malintentionnée ;
  • nous employons la fonction nl2br() qui permet de conserver les sauts de ligne effectués dans la zone de texte

votre adresse e-mail est : demandeur@fai.com
Avez-vous souhaité vous inscrire sur la lettre d'informations ? oui
et sa description est la suivante :
Site sur les insectes tropicaux.
Découvrez les plus impressionnants insectes visibles sur notre planète en toute saison : l'été comme l'hiver.
pour la rubrique photos

Ces données seront ensuite insérées dans une base de données pour y être conservées et exploitées par la suite.

Page mise à jour le 04/04/2009  74 connecté(e)sFlux RSS     © 2001-2010 notre-planete.info - tous droits réservés     Mentions légales     Plan du site     Presse     Publicité     Contact