Vous êtes ici :
Accueil Cours Développement web Création d'un site web en PHP et MySQL Gestion des formulaires en PHP

Création d'un site web en PHP et MySQL : Gestion des formulaires en PHP

GET et POST


Le  but   est   de   récupérer   le   contenu   des   champs   d'un   formulaire   HTML  dans   notre   code   PHP  pour pouvoir   le   traiter.   Lorsqu'un   formulaire   est   envoyé   à   un   script   PHP,   toutes   les   variables   seront disponibles automatiquement dans le script. Les  formulaires peuvent être de type GET ou POST.  Pour  rappel, dans un formulaire de type GET, les   informations   sont   passées   directement   par   l'URL  en   clair,   ce   qui   peut   poser   des   problèmes   de
limitations suivant le serveur (de 256 à 8192 octets selon le cas). La méthode POST n'a pas ce genre de   limitation,   car   les   informations   sont   transmises   par   le   conteneur   de   variables   globales   (dans l'entête) et sont de plus cachées. PHP peut gérer les deux méthodes de manière transparente.

 

Récupération par tableau


Chaque  champ  de  formulaire  en  PHP  est   défini  par   un  nom  et   une  valeur.   Dans  un  script,   PHP  va récupérer   ces  noms   et   ces  valeurs   dans  des  tableaux   spéciaux   dit   superglobaux   (accessibles   depuis partout).   Pour   la   méthode   GET,   le   tableau   est   $_GET,   pour   la   méthode   POST   le   tableau   est $_POST.   Si   vous   ne   souhaitez   pas   vous   soucier   de   la   méthode,   vous   pouvez   utiliser   le   tableau $_REQUEST.  En index on aura le nom du champ de formulaire (ou de  la variable passée en URL) et en valeur la valeur du champ. Par exemple:

 

<form action="foo.php" method="post">
Name: <input type="text" name="username"><br>
Email: <input type="text" name="email"><br>
<input type="submit" name="submit" value="Submit me!">
</form>

 

Dans la page PHP foo.php on aura :

<?php
echo $_POST['username']; // ou echo $_REQUEST['username'];
echo $_REQUEST['email']; //ou $_POST['email'];
?>

 

Imaginons l'appel d'une page test.php par une URL comme ceci:
http://www.monsite.com/test.php?id=1
Ici  on  transmet   une variable  via une  URL et   donc  la méthode  implicite GET.   Pour  récupérer  « id » dans un code PHP on peut donc faire:

 

<?php
echo $_GET['id'];
//ou
echo $_REQUEST['id'];
?>

 

$_GET  ne   contiendra   que   les   variables   de   type  GET.   $_POST   ne   contiendra   que   les   variables   de type  POST.   $_REQUEST  contient  les   variables  de  type  POST  et   GET  mais   aussi   les  variables  de cookies.   Il est aussi  possible de procéder autrement en  récupérant  le nom du champ  directement en tant que variable sans passer par un  tableau. Pour cela  il faut vérifier dans  le  fichier php.ini  que la   valeur   register_globals   est   à   "on".   Dans   ce   cas   les   noms   des   champs   de   formulaire   seront   les noms des variables:
 

<?php
echo $username;
echo $email;
?>

 

Récupération directe


Si   cette   valeur   est   à   off   et   que   pour   diverses   raisons   (sécurité,   pas   le   droit,   etc)   vous   ne souhaitez/pouvez   pas   la   modifier,   il   existe   tout   de   même   une   méthode.   La   fonction « import_request_variables »   permet   d'effectuer   explicitement   la   même   chose.   Cette   fonction prend un ou deux paramètres,   le second étant  optionnel.  Après exécution, on  récupère  les variables sans passer par un tableau. Le premier paramètre est le type de variables qu'on souhaite récupérer :
– P/p : variables de type POST
– G/g: variables de type GET
– C/c: variables de type cookie
On   peut   cumuler   l'ensemble   mais   attention   à   l'ordre   !   Le   second   paramètre   est   le   préfixe   qu'on souhaite donner au nom des variables qu'on va récupérer. Voici deux exemples:

 

<?php
import_request_variables("p");
echo $username;
?>

 

<?php
import_request_variables("P","Post_");
echo $Post_username;
?>

 

On peut aussi  passer par la  fonction « extract » qui permet d'exporter un  tableau en variables.  Ainsi pour le tableau $_POST:

 

<?php
extract($_POST);
echo $username;
?>

 

Utiliser des tableaux


Les   formulaires   permettent   d'utiliser   des   listes   à   choix   multiples   et   PHP   doit   donc   récupérer l'ensemble des choix de l'utilisateur. Pour ça il faut utiliser les tableaux.

 

<form action="" method="post">
Name: <input type="text" name="personal[name]"><br>
Email: <input type="text" name="personal[email]"><br>
Beer: <br>
<select multiple name="vin[]">
<option value="bordeaux">bordeaux</option>
<option value="beaujolais">beaujolais</option>
<option value="loire">loire</option>
</select><br>
<input type="hidden" name="action" value="submitted">
<input type="submit" name="submit" value="submit me!">
</form>

 

Dans l'exemple précédent si par exemple on sélectionne plusieurs vins (ex : bordeaux et beaujolais) on aura dans $vin[0] bordeaux et $vin[1] beaujolais.

 

 




Vous êtes ici :
Accueil Cours Développement web Création d'un site web en PHP et MySQL Gestion des formulaires en PHP