Sommaire
Les variables
Essentiel
Variables prédéfinies
Ancienne variables prédéfinies (
Portée des variables
Les variables dynamiques
Variables externes à PHP
|
4.2.6 Variables externes à PHP
4.2.6.1 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 avec un formulaire simple |
<form action="foo.php" method="post"> Nom: <input type="text" name="nom"><br> <input type="submit"> </form>
|
Lorsque ce formulaire est envoyé, le PHP va créer la variable
, qui contiendra la valeur
que vous avez entrée dans le champs Nom:
du formulaire.
Note |
La directive de configuration magic_quotes_gpc affecte les valeurs
issues des méthodes GET et POST ainsi aue des Cookies. Si cette
directive est active, une valeur telle que It's "PHP!"
sera automagiquement transformée en It\'s
\"PHP!\".
L'échappement est nécessaire pour les insertions en base de
données. Voyez addslashes,
stripslashes et
magic_quotes_sybase.
|
Le PHP permet aussi l'utilisation des tableaux dans le contexte de
formulaire, mais seulement des tableaux à une seule dimension. Comme
cela, vous pouvez rassembler des variables ou utiliser cette
fonctionnalité pour récupérer les valeurs d'un choix
multiple :
Variables complexes de formulaire |
<form action="array.php" 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="medoc">Médoc <option value="chablis">Chablis <option value="riesling">Riesling </select> <input type="submit"> </form>
|
Si l'option "track_vars" est activée, soit par l'option de
compilation
track_vars, soit par la directive de
configuration ,
les variables transmises par les méthodes POST et GET
pourront aussi être trouvées dans le tableau
associatif global $HTTP_POST_VARS ou $HTTP_GET_VARS
suivant la méthode utlisée.
4.2.6.1.1 Bouton "submit" sous forme d'image
Lorsque vous envoyez le résultat d'un formulaire, vous
pouvez utiliser une image au lieu du bouton "submit" standard
en utilisant un tag :
|
<input type=image src="image.gif" name="sub">
|
Lorsqu'un utilisateur clique sur l'image, le formulaire sera
transmis au serveur avec deux variables de plus, sub_x et
sub_y. Ces deux variables contiennent les coordonnées
de l'endroit où l'utilisateur à cliqué. Les
utilisateurs expérimentés remarqueront que les noms
de variables sont transmis avec une virgule à la place du
caractère "_", mais le PHP fait la conversion
automatiquement.
4.2.6.2 HTTP Cookies
Le PHP supporte les cookies HTTP de manière totalement
transparente, comme défini dans les
Netscape's Spec. Les cookies
sont un mécanisme permettant de stocker des données
sur la machine cliente à des fins d'authentification de
l'utilisateur. Vous pouvez établir un cookie grâce à
la fonction setcookie. Les cookies
font partie intégrante du "header" HTTP, et donc
la fonction setcookie doit être
appelée avant que le moindre affichage ne soit envoyé
au navigateur. C'est la même restriction que pour la fonction
header. Tout cookie envoyé depuis le
client sur le serveur sera automatiquement stocké sous
forme de variable, comme pour la méthode POST ou GET.
Si vous souhaitez assigner plusieurs valeurs à un seul
cookie, il vous faut ajouter les caractères
[] au nom de votre cookie.
Par exemple :
|
<?php setcookie ("MonCookie[]", "test", time()+3600); ?>
|
Il est à noter qu'un cookie remplace le cookie
précédent par un cookie de même nom tant que
le "path" ou le domaine sont identiques. Donc, pour une application
de caddie, vous devez implémenter un compteur et
l'incrémenter au fur et à mesure. C'est-à-dire:
Exemple avec setcookie |
<?php $compte++; SetCookie ("Compte", $compte, time()+3600); SetCookie ("Caddie[$compte]", $item, time()+3600); ?>
| 4.2.6.3 Variables d'environnement
Le PHP fait en sorte que les variables d'environnement soient accessibles
directement comme des variables PHP normales.
|
<?php echo $HOME; /* Affiche la valeur de la variable d'environnement HOME, si celle-ci est affectée. */ ?>
|
Même si le PHP crée les variables lors de l'utilisation
des méthodes GET, POST et cookie, il est de temps en temps
préférable de transmettre explicitement la valeur de
la variable afin d'être sûr de la valeur.
La fonction getenv peut être
utilisée pour récupérer la valeur
des variables d'environnement. Vous pouvez aussi affecter
une variable d'environnement grâce à la fonction
putenv.
4.2.6.4 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 suivi encore par la chaîne non-guillemetée (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 (underscore).
4.2.6.5 Détermination du type des variables
Parceque le 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_long,
is_double,
is_string,
is_array et
is_object.
|