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 8-1 . 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 $nom , qui contiendra la valeur que vous avez entrée dans le champs Nom : du formulaire .

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 :

Exemple 8-2 . 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 ? php_track_vars ? , 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 .

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 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 .

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 8-3 . Exemple avec setcookie( )

 
?php

 
$compte++

 
;

 
SetCookie

 
("Compte"

 
,

 
$compte

 
,

 
time()+3600)

 
;

 
SetCookie

 
("Caddie[$compte]"

 
,

 
$item

 
,

 
time()+3600)

 
;

 
?



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( ) .

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 ) .

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( ) .