PHP étant un langage de script, il
doit pouvoir être capable de communiquer avec son environnement. Les
scripts PHP étant exécutée dans le contexte d’un navigateur Web, il est
important de se rappeler que toute sortie vers le navigateur sera
interprétée comme du texte HTML.
5.1 Envoi vers le navigateur
Trois fonctions permettent d’envoyer du texte vers le navigateur : echo, print et printf.
L’intérêt principal de cette dernière fonction est, nous le verrons
plus tard, la possibilité de spécifier un format de sortie afin
d’éviter d’envoyer la valeur telle quelle.
5.2 Récupération des données
d’un formulaire
Si
l’envoi de données vers le navigateur est simple en utilisant les trois
fonctions décrites précédemment, la récupération d’informations en
provenance du navigateur l’est un peu moins.
Le langage HTML permet la récupération de données d’un formulaire : champs/zones de texte, listes déroulantes, cases à cocher, …
PHP transforme tous les champs d’un formulaire en variables ce qui permettra de modifier éventuellement leur contenu.
Soit le formulaire suivant :
<FORM ACTION="/php/myprogramme.php" METHOD="POST">
Saisissez votre nom :
<INPUT TYPE="TEXT" NAME="NOM" SIZE="20"> MAXSIZE="50" ><BR>
<INPUT TYPE="SUBMIT" VALUE="Envoyer la requête">
</FORM>
Dans le fichier myprogramme.php, il sera possible de récupérer la valeur saisie dans le champ NOM de la manière suivante :
$nom = $_POST[‘NOM’] ;
Attention,
vous trouverez dans de nombreux scripts une récupération de variable de
formulaire directement (print ‘’$NOM ‘’) ou via des tableaux à noms
longs comme $HTTP_GET_VARS. Cette technique employée jusqu’à peu montre
ses limites avec les dernières versions de PHP (et quel que soit le
mode de passage des paramètres : POST, GET, cookie, session, …). La
différence est que depuis la version 4.2.0, l’option
register_globals du
php.ini
qui était positionnée par défaut à ON est à OFF. Donc, autant prendre
de bonnes habitudes et utiliser la nouvelle “ technique ”. Pour
vérifier la version de PHP, utilisez la fonction
phpinfo() qui retourne une multitude d’informations. Ca vaut le coup d’oeil.
Voici un récapitulatif des variables et des changement selon les versions :
Avant la version 4.10 (deprecated) | Après la version 4.10 |
$HTTP_GET_VARS | $_GET |
$HTTP_POST_VARS | $_POST |
$HTTP_POST_FILES | $_FILES |
$HTTP_COOKIE_VARS | $_COOKIE |
$HTTP_SESSION_VARS | $_SESSION |
$HTTP_ENV_VARS | $_ENV |
$HTTP_SERVER_VARS | $_SERVER |
Pour récupérer facilement les variables, vous pouvez utiliser la fonction PHP
extract. Elle va exporter votre tableau associatif et créer une variable pour chaque clé du tableau.
extract($_POST,EXTR_OVERWRITE); |
Cette fonction va créer une variable pour chaque clé du tableau associatif $_POST. Si l'on a :
- $_POST['nom']
- $_POST['prenom']
- $_POST['age']
La fonction extract() va créer les variables suivantes :
Type | Signification |
EXTR_OVERWRITE | Écrase les variables existantes |
EXTR_SKIP | N'écrase pas les variables existantes |
EXTR_PREFIX_SAME | Si une variable existe déjà, une nouvelle variable est créée avec un préfix donné en 3ème argument à la fonction |
EXTR_PREFIX_ALL | Crée de nouvelles variables avec le préfix passé en 3ème argument pour toutes les clés du tableau |
EXTR_PREFIX_INVALID | Crée de nouvelles variables avec le préfix passé en 3ème argument pour les noms de variable invalides (par exemple $1)
|
5.3 Récupération des variables d’environnement
Tableau $_SERVER
- PHP_SELF : Le nom du fichier du script en cour d'exécution, par rapport au document root.
- SERVER_NAME
: Le nom du serveur hôte qui exécute le script suivant. Si le script
est exécuté sur un hôte virtuel, ce sera la valeur définie pour
cet hôte virtuel.
- DOCUMENT_ROOT : La racine sous laquelle le script courant est exécuté, comme défini dans la configuration du serveur.
- REMOTE_ADDR : L'adresse IP du client qui demande la page courante.
- REMOTE_PORT : Le port utilisé par la machine cliente pour communiquer avec le serveur web.
- SCRIPT_FILENAME : Le chemin absolu jusqu'au script courant.
- SERVER_PORT
: Le port de la machine serveur utilisé pour les communications. Par
défaut, c'est '80'. En utilisant SSL, par exemple, il sera
remplacé par le numéro de port HTTP sécurisé.
- REQUEST_URI : L'URI qui a été fourni pour accéder à cette page. Par exemple : '/index.html'.
Tableau $_FILE
- [‘NOM OBJET FILE’][‘name’] : permet de récupérer le nom du fichier sélectionné dans un objet file du navigateur (exemple, fichier à télécharger).
- [‘NOM OBJET FILE’][‘tmp_name’] : retourne le nom du fichier temporaire stocké sur le serveur, en attente de transfert à la destination désirée.
- [‘NOM OBJET FILE’][‘size’] : retourne la taille en octet du fichier.
- [‘NOM OBJET FILE’][‘type’] : donne le type MIME du fichier.