Variables externes � PHP
Formulaires HTML (GET et POST)
Lorsqu'un formulaire est envoy� � un script PHP, toutes les variables du formulaire seront automatiquement disponibles dans le script. Par exemple, consid�rons le formulaire suivant :
Exemple #1 Exemple avec un formulaire simple
<form action="foo.php" method="post"> Nom : <input type="text" name="username" /><br /> Email: <input type="text" name="email" /><br /> <input type="submit" name="submit" value="Envoie!" /> </form>
Suivant votre configuration particuli�re et vos pr�f�rences, vous avez plusieurs m�thodes pour acc�der aux variables du formulaires. Voici quelques exemples :
Exemple #2 Acc�der simplement � des variables de formulaires POST
<?php
// Disponibles depuis PHP 4.1.0
echo $_POST['username'];
echo $_REQUEST['username'];
import_request_variables('p', 'p_');
echo $p_username;
// Plus disponible depuis PHP 6. Depuis PHP 5.0.0, ce type de variable peut �tre d�sactiv�
// avec la directive de configuration register_long_arrays.
echo $HTTP_POST_VARS['username'];
// Disponibles si la directive register_globals = on. Depuis
// PHP 4.2.0 la valeur par d�faut de cette directive est register_globals = off.
// Utiliser ou pr�sumer cette m�thode est d�courag�.
echo $username;
?>
Utiliser un formulaire de type GET est similaire, hormis le fait que vous deviez utiliser les variables pr�-d�finies de GET � la place. GET s'applique aussi � la QUERY_STRING (les informations disponibles apr�s le '?' dans une URL). De ce fait, par exemple, http://www.example.com/test.php?id=3 contient les donn�es de GET, qui sont accessibles via $_GET['id']. Voyez aussi $_REQUEST et import_request_variables().
Note: Les tableaux superglobaux, comme $_POST et $_GET sont disponibles depuis PHP 4.1.0.
Comme nous l'avons d�j� dis, avant PHP 4.2.0, la valeur par d�faut de register_globals �tait on. La communaut� PHP n'encourage personne � utiliser cette directive et privil�gie la valeur off et un code accord�.
Note: La directive de configuration magic_quotes_gpc affecte les valeurs de GET, POST et cookies. Si elle est activ�e, une valeur comme celle de (C'est "PHP!") sera magiquement transform�e en (C\'est \"PHP!\"). La protection des caract�res est n�cessaire pour l'insertion dans les bases de donn�es. Voyez aussi les fonctions addslashes(), stripslashes() et magic_quotes_sybase.
PHP comprend aussi les tableaux dans le contexte des formulaires. (voir aussi la FAQ). Vous pouvez, par exemple, grouper des variables ensemble ou bien utiliser cette fonctionnalit� pour lire des valeurs multiples d'un menu d�roulant. Par exemple, voici un formulaire qui se poste lui-m�me des donn�es, et les affiche :
Exemple #3 Variables de formulaires complexes
<?php
if ($_POST) {
echo '<pre>';
echo htmlspecialchars(print_r($_POST, true));
echo '</pre>';
}
?>
<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="beer[]">
<option value="warthog">Warthog</option>
<option value="guinness">Guinness</option>
<option value="stuttgarter">Stuttgarter Schwabenbr�u</option>
</select><br />
<input type="submit" value="Validez moi !" />
</form>
Nom de variables IMAGE de type SUBMIT
Lors de la soumission d'un formulaire, il est possible d'utiliser une image au lieu d'un bouton standard, comme ceci :
<input type="image" src="image.gif" name="sub" />
Lorsque l'utilisateur clique sur cette image, le formulaire associ� est envoy� au serveur, avec deux donn�es suppl�mentaires, sub_x et sub_y. Elles contiennent les coordonn�es du clic de l'utilisateur dans l'image. Vous noterez que ces variables sont envoy�es par le navigateur avec un point dans leur nom, mais PHP convertit ces points en soulign�s.
Cas des points dans les noms de variables
Typiquement, PHP ne modifie pas les noms des variables lorsqu'elles sont pass�es � un script. Cependant, il faut noter que les points (.) ne sont pas autoris�s dans les noms de variables PHP. Pour cette raison, jetez un oeil sur :
<?php
$varname.ext; /* nom de variable invalide */
?>
Dans ce cas, l'analyseur croit voir la variable nomm�e $varname, suivie par l'op�rateur de concat�nation, et suivie encore par la cha�ne sans guillemets (une cha�ne sans guillemets et qui n'a pas de signification particuli�re). Visiblement, ce n'est pas ce qu'on attendait...
Pour cette raison, il est important de noter que PHP remplacera automatiquement les points des noms de variables entrantes par des soulign�s.
D�termination du type des variables
Parce que PHP d�termine le type des variables et les convertit (g�n�ralement) comme il faut, ce n'est pas toujours le type de variable que vous souhaitez. PHP inclut des fonctions permettant de d�terminer le type d'une variable : gettype(), is_array(), is_float(), is_int(), is_object() et is_string(). Lisez �galement le chapitre sur les types.