04
Juin
2002

Variables utiles en PHP

... Ou les variables dont on a toujours besoin, et dont on ne se souvient jamais (et oui, ce titre là faisait un peu long :p )
PHP regorge de petites variables bien utiles qui permettent de récupérer tout un tas d'informations sur l'exécution en cours. Les variables sont actuellement accessibles plusieurs méthodes : $HTTP_SERVER_VARS et $_SERVER. La deuxième formulation fonctionne uniquement sur les version de PHP supérieure à 4.1.0. Il en est de même pour les variables $HTTP_POST_VARS, $HTTP_GET_VARS, $HTTP_COOKIE_VARS, $HTTP_ENV_VARS et $HTTP_SESSION_VARS.
Toutes ces variables sont accessibles via la fonction phpinfo() directement inclue dans PHP. Bon d'accord, on peut les avoir via la fonction, mais ce n'est pas toujours pratique, alors en voici une liste non exhaustive :

  • $HTTP_GET_VARS
  • $HTTP_POST_VARS
  • $HTTP_SERVER_VARS
  • $PHP_SELF
  • $SERVER_NAME
  • $SERVER_ADDR
  • $HTTP_USER_AGENT
  • $DOCUMENT_ROOT
  • $REQUEST_METHOD
  • $QUERY_STRING
  • $HTTP_ACCEPT_LANGUAGE
  • $REMOTE_ADDR
  • $HTTP_REFERER
  • $SCRIPT_FILENAME
  • $REQUEST_URI

$HTTP_GET_VARS[] ou $_GET[]

Il s'agit d'un tableau associatif qui regoupe toutes les variables passées au script par le méthode GET (c'est à dire dans l'url). Rien de bien compliqué, si vous avez une URL du genre : http://monsite.com/monscript.php?argument=foobar Vous pourrez récupérer la variable argument par $HTTP_GET_VARS['argument']

$HTTP_POST_VARS[] ou $_POST[]

Identique au tableau $_GET, celui-ci permet de récupérer toutes les variables passées en méthode POST.

Exemple :

<FORM action="$PHP_SELF" method="POST">
<INPUT type="text" name="monchamp">
<INPUT type="submit" value="Valider">
</FORM>

Le formulaire une fois posté permettra l'accès à $HTTP_POST_VARS['monchamp'] pour utiliser la valeur tapée dans le champ de formulaire.

$HTTP_SERVER_VARS[]ou $_SERVER[]

Ce tableau associatif permet l'accès aux variables appartenant au serveur.
On peut retrouver son nom, son IP, ainsi que des infos appartenant plus au client, comme l'IP ou le User Agent.

$PHP_SELF ou $HTTP_SERVER_VARS['PHP_SELF'] ou $_SERVER['PHP_SELF']

Cette variable très utile vous permet de récupérer le nom du fichier courant.
Par exemple, si vous codez un petit script avec un formulaire, et que vous ne savez pas sur quelle page poster le formulaire, utilisez cette variable :

<FORM action="$PHP_SELF" method="POST">

$SERVER_NAME ou $HTTP_SERVER_VARS['SERVER_NAME'] ou $_SERVER['SERVER_NAME']

Cette variable, également appelée $HTTP_HOST, permet de savoir le nom du serveur sur lequel s'exécute votre script. Par exemple, ici, sur PHPTools4U.com, le $SERVER_NAME est www.phptools4u.com.
Simple non ?

$SERVER_ADDR ou $HTTP_SERVER_VARS['SERVER_ADDR'] ou $_SERVER['SERVER_ADDR']

Vous donne la possibilité de manipuler l'adresse IP du serveur. On l'utilise néanmoins rarement, les IP des serveurs ne permettant pas d'accéder au site sur un hébergement mutualisé.

$HTTP_USER_AGENT ou $HTTP_SERVER_VARS['HTTP_USER_AGENT'] ou $_SERVER['HTTP_USER_AGENT']

Variable très très utile pour déterminer quel type de navigateur utilise l'utilisateur actuellement sur votre site. En l'utilisant correctement, vous pouvez facilement afficher une partie voire le site entier d'une façon différente entre Mozilla et Internet Explorer. Exemple :

<?
if ( eregi('microsoft'__$HTTP_USER_AGENT__)  ) {
    echo 
'Internet Explorer';
}
else {
    echo 
'Autre navigateur';
}
?>

A noter cependant que certains navigateurs ont la possiblité de modifier leur USER_AGENT, donc, il se peut que vos tests ne fonctionne pas correctement avec ces navigateurs "trafiqués".

$DOCUMENT_ROOT ou $HTTP_SERVER_VARS['DOCUMENT_ROOT'] ou $_SERVER['DOCUMENT_ROOT']

Variable très utilisée pour les include et autre require, elle vous permet de trouver la racine au niveau du système de fichier.
Par exemple, vous possédez un serveur sous Linux, dont les fichiers accessibles depuis le web sont dans /var/www/.
Ainsi donc, la racine HTTP (celle à laquelle vous faites référence par / lors des appels aux images par exemple) correspond à /var/www/, et c'est donc ce que retournera $DOCUMENT_ROOT.

Posté par Mathieu LESNIAK à 15:12 dans la catégorie Articles | RSS catégorie
Tag(s) associé(s) :
Partager cet article : Ajouter en favori sur KreuZZPoster cet article sur ScoopeoPoster cet article sur FuzzPoster cet article sur diggAjouter en favori sur Del.icio.usPoster cet article sur reddit
Erianor
04/06/02 17:28:27

Très instructif en ce qui me concerne. Déjà plusieurs applications en tête.

Des articles comme ça, ça m'intéresse.

Bravo et merci

maverick
04/06/02 19:44:30

Et hop, maintenant, on peut imprimer les articles !

elix
04/06/02 23:20:01

Excelent article, vivement la suite.

Ce serait sympa une version download ? ...

bonne continuation

renaud
renaud
05/06/02 11:03:55

Yes, ENFIN ( ;) ) un article !!! MERCIIIIIIIII !!!!!!!! Bon, ben j'va mettre tout ça en application (dès que j'aurais le temps...). Vivement la suite

totom
05/06/02 17:42:39

Je sais plus quoi dire : c'est l'émotion !

Non, je sais : il est franchement pas aml cet article. Il est clair, pas compliqué, intéressant et surtout très utile. En +, il est en français (y en a qui vont être content !).

Merci Mathieu ! :)

Manga
14/09/02 22:49:03

Ca le fait bien!

plus sympa que la doc nexen!

Sylvain
16/10/06 17:47:17

Merci ! Interessant cet article. :)

Je ne connaissais pas ce site, il faudra que j'y fasse plus attention.

OnRencontre
18/10/06 15:10:40

Bon article clair et complet ;)

Dos
Dos
17/11/06 12:55:16

Merci pour cet article très simpliste. Mais Pouvez-vous me donner un exemple de l'utilisation de $_GET en tableau associatif? C'est à dire faire passer un tableau en paramètre et récupérer les valeurs après.

n'guessan Paul
n'guessan Paul
13/12/06 09:55:10

je n'ai pas grande chose à dire

Steph
Steph
06/02/07 16:20:44

quelqu'un sait comment stopper des requêtes trop longues ?

joe
joe
07/02/07 01:54:33

merci tres utile

sky
sky
04/04/07 16:03:56

C'est pas top comme exemple de code : <FORM action="$PHP_SELF" method="POST">

Etant des ""pro"" ... on devrai montrer l'exemple d'un code un minimum sécurisé.

boggi'
boggi'
18/05/07 21:16:07

Boggi''';test\

boggi''''\;/*";
boggi''''\;/*";
18/05/07 21:18:09

<script>boggi.test</script>

boggi<!--
boggi<!--
18/05/07 21:19:07

encore boggi -_-

<script>alert("T")</script>
20/05/07 12:10:12

<script>alert("T")</script>

Brocante
04/07/07 22:05:39

Merci vraiment tres utile

Bert
16/08/07 23:25:49

Ce billet a 5 ans et n'a pas perdu une ride ! Merci, il m'était bien utile

Bertrand (qui apprend le php)

Yoric
Yoric
08/10/07 17:33:56

J'ignorais que l'on pouvait récupérer le nom du fichier executant le scipt courant avec $PHP_SELF. Bravo pour cet article intelligent, du coup de vais parcourir les autres articles de ce site ^^

lavercq
10/03/09 22:14:30

Bonjour, J'ai photocopié toutes les pages d'un livre. je souhaite mettre un lien vers page précédente,âge suivante sur chaque page contenant la photo d'une page. Pour éviter de faire un travail fastideiux, ne pourrais-je pas utiliser :$SCRIPT_FILENAME ou $HTTP_SERVER_VARS'SCRIPT_FILENAME' ou $_SERVER'SCRIPT_FILENAME' étant entendu qu'il me faut extraire le numéro qui correspond à la photo de la page, donc si $_SERVER'PHP_SELF' me renvoie par exemple page10.php,il faut que j'arrive à lire 10 pour en déduire un lien vers image9 et vers image11 pour créer page9.php et page11.php... Est-ce réalisable ? Merci de votre attention

Les commentaires ne sont pas autorisés pour ce billet