COURS PHP

  Dernière mise à jour effectuée le : Mardi 26 août 2003    

Accueil | Les variables natives

Les variables natives

Pré-requis :



Introduction

Pour permettre la communication entre un script PHP et une page HTML, ou entre deux scripts, le langage PHP possède ce que l'on appelle des "variables natives". C'est-à-dire des zones de mémoires réservées par le serveur pour stocker des informations particulières.
Comme toutes variables, elles possèdent un nom. Ici, ce sont des noms réservés (faisant partie des mots réservés du langage et qui ne servent qu'à ça), dont la syntaxe est bien particulière. Nous allons étudier ici, les plus fréquemment utilisées et aussi les plus utiles pour notre objectif.
En particulier, nous allons nous intéresser à celles qui permettent de transférer les valeurs de nos propres variables d'un script à l'autre ou entre un script et une page HTML. Toutes ces variables sont des tableaux associatifs ou non, c'est-à-dire que les valeurs stockées le sont dans des postes de tableaux.
Nous verrons également les variables natives donnant des renseignements sur le serveur lui même et/ou le système du client ou son ordinateur.

ATTENTION : La documentation en ligne de PHP, nous dit à la page http://fr.php.net/variables.predefined, que de nouvelles normes ont été mise en place pour des raisons de sécurité. Et que la manière d'accéder au contenu de ces variables a changé. Nous le verrons au fur et à mesure. Ce qui ne doit pas vous empêcher d'aller vous renseigner en cliquant sur le lien ci-dessus. Rassurez-vous, c'est en français.

 

 



$_POST anciennement $HTTP_POST_VARS

Cette variable native sert à recevoir et stocker les valeurs des objets de formulaire envoyées à une page HTML ou à un script PHP lorsque l'attribut "method" est POST dans le formulaire.
J'explique :
Lorsque vous voulez demander un certain nombre de renseignements à un utilisateur connecté à votre site, vous utilisez un formulaire. Pour ce faire, vous créez en HTML des "Tags" avec des attributs, comme l'attribut "name" et pour certains, l'attribut "value". Pour chacun des couples "name et value" de ces objets de formulaires, PHP va stocker les valeurs soit entrées par l'utilisateur, soit définies par vous, dans la variable $HTTP_POST_VARS pour peu que vous ayez pris soin de positionner la "method" d'envoi de votre formulaireà "POST".
Prenons un exemple et considérons le code source des objets de formulaire suivants :

un champ de texte simple :
<input name="NomPrenom" type="text" id="NomPrenom" size="30">
Une série de cases à coche :r
<input name="JavaScript" type="checkbox" id="JavaScript" value="Oui">
<input name="PHP" type="checkbox" id="PHP" value="Oui">
<input name="HTML" type="checkbox" id="HTML" value="Oui">
deux boutons radio :
<input type="radio" name="Genre" value="Femme">
<input type="radio" name="Genre" value="Homme">
et enfin une liste :
<select name="Ordinateur" id="Ordinateur">
<option value="PC sous Windows">PC sous Windows</option>
<option value="PC sous NT">PC sous NT</option>
<option value="MacIntosh">MacIntosh</option>
</select>
Ce qui donne le formulaire qui apparaît ci-dessous. Remplissez-le et cliquez sur le bouton "Envoyer" (n'ayez pas peur, ça ne mord pas...).

Nom et Prénom
Je connais : JavaScript PHP HTML
Je suis une femme un homme
Je travaille sur

 

 



$_GET anciennement $HTTP_GET_VARS

Le mécanisme est le même que ci-dessus, sauf qu'ici, on mettra dans notre formulaire "method = GET".
PHP créera, en recevant la page appelée, une variable native appelée $HTTP_GET_VARS, qui sera toujours un tableau associatif, et qui contiendra exactement la même chose que précédemment.
La différence se situe dans la méthode d'envoi. Avec GET, les couples "name=value" de notre formulaire seront accolés au bout de l'URL de la page appelée, introduits par le signe "?" collé à la fin de l'URL, puis chacun des couples "name=value" seront séparés par des "&".
Remplissez le formulaire ci-dessous et regardez ce que ça donne en cliquant sur le bouton "Envoyer" (non, ça ne mord toujours pas).

Nom et Prénom
Je connais : JavaScript PHP HTML
Je suis une femme un homme
Je travaille sur

 

 



$_ENV anciennement $HTTP_ENV_VARS

Cette variable, toujours un tableau associatif, contient toutes les valeurs des variables d'environnement du client.
Nous ne pouvons pas toutes les décrire, car en plus, elles sont différentes d'un client à l'autre. Lorsque nous aurons besoin de l'une d'elle, nous l'étudirons en détail à ce moment là.
Cliquez sur le bouton ci-dessous pour aller voir ce que ça donne pour vous.

 

 



Autres variables natives

En plus de $_GET, $_POST et $_ENV, il existe aussi $GLOBALS (attention, pas de "_" devant), $_SERVER, $_COOKIE, $_FILES, $_REQUEST et $_SESSION qui chacune ont leur utilité. Vous trouverez tous les renseignements à leur sujet à l'adresse http://fr.php.net/variables.predefined en français.
Pour faire s'afficher comme nous l'avons fait dans les exemples précédents, le tableau associatif qui représente ces variables, il suffit d'écrire dans votre script PHP, le petit programme suivant (par exemple pour $_POST) :

<?php
//
affichage des variables globales pour debug
echo "<pre>";
print_r($_POST) ;
echo "
</pre>";
?>

en remplaçant $_POST par la variable native de votre choix, vous aurez son affichage également.
C'est bien utile lors d'une erreur de programmation, pour voir ce qu'il y a à l'intérieur d'une variable à un moment donné de l'exécution de votre programme.
Pour voir s'afficher l'intégralité des variables natives et de leur contenu, vous n'avez qu'à répéter ce bout de programme en changeant le nom de ce que vous voulez afficher.
En cliquant ICI, vous aurez un aperçu de ce que ça donne.
Mais puisque c'est vous et que je vous aime bien, je l'ai fait pour vous (ma bonté me perdra) et pouvez télécharger ce code qui fait s'afficher l'intégralité de ces variables natives. Attention, ça fait des pages et des pages de lecture lors de l'exécution. N'en abusez pas.

 



Accéder au contenu d'un poste d'une de ces variables natives.

Bien entendu, il ne suffit pas d'afficher le contenu d'une variable native. Ce qui nous intéresse, c'est d'avoir accès et utiliser le contenu d'un poste particulier. Là, rien de plus simple pour toutes celles et tous ceux qui ont lu les leçons listées dans les pré-requis, et surtout celle sur Les tableaux associatifs à une dimension.
Nous savons que ce sont des tableaux associatifs. Leur nom, est le nom de la variable native. En les listant, nous connaissons aussi les noms de leurs postes. Pour accéder au contenu d'un de ces postes, il suffit donc d'écrire :

$MaVariable = $_NomDeLaVariableNative[NomDuPosteDesire] ;

où vous remplacez bien entendu $MaVariable par le nom de votre variable,
$_NomDeLaVariableNative par le véritable nom de la variable native (par exemple $_ENV), et NomDuPosteDesire, par le vrai nom du poste de la variable native.

Par exemple, pour avoir l'adresse IP du client, il suffira d'écrire :
$AdresseIPClient = $_SERVER[REMOTE_ADDR] ;
Ce qui, pour vous, donne :
Votre adresse IP en ce moment, est : 18.218.168.16

ATTENTION : remarquez bien qu'entre les crochets, il n'y a pas de guillemets pour écrire le nom du poste, bien que ce soit une chaîne de caractères. C'est la syntaxe qui veut ça.
Anciennement, il aurait suffit d'écrire $REMOTE_ADDR, et vous auriez obtenu la même chose que $_SERVER[REMOTE_ADDR]. Mais les nouvelles normes exigent dorénavant l'instruction complète et la référence explicite au nom de la variable native pour empêcher de modifier le contenu d'une variable native par inadvertance.

 

 


Les informations PHP

Une instruction toute simple permet d'afficher à tout instant la liste complète et le contenu de toutes les variables natives et les informations concernant PHP sur le serveur qui supporte l'interpréteur (pour peu que le serveur soit paramètré pour l'autoriser, ce qui est en général toujours le cas).
Cette instruction est :
phpinfo()
Pour voir ces variables, vous n'avez qu'à écrire un petit programme d'une extrême simplicité qui est :

<?php
phpinfo() ;
?>

Pour faire tourner ce programme et voir (dans une fenêtre séparée) toutes les caractéristiques du noyau PHP et du serveur qui héberge ce site (Free pou ne pas le citer), cliquez ICI

Vous remarquerez, dans la rubrique "Configuration PHP Core" (configuration du noyau central de PHP) certaines fonctions qui sont à "enabled" (activé) ou "disabled" (désactivé). Ce sont les possibilités que vous offre le serveur qui vous héberge. Bien pratique pour savoir si l'on a accès à telle ou telle fonctionnalité du noyau PHP.

 



Ce cours est enseigné par Philippe Médan 
dans le cadre de la formation des professionnels de l'INTERNET.
au CREFAC , 14 rue Scandicci, 93000 Pantin. Tél. : 01 48 46 51 99
au GITA-GRETA , Lycée Technologique Diderot 61, rue David D'Angers 75019 Paris Tél. : 01 40 40 36 27
au CESI à l'Ecole des ingénieurs, 116 Av Aristide Briand, BP 57, 92224 Bagneux CEDEX Tél. : 01 45 36 70 00

© Philippe Médan 1999-2003. Tous droits de reproduction réservés pour tous pays.