« Programmation PHP/Variables » : différence entre les versions

Un livre de Wikilivres.
Contenu supprimé Contenu ajouté
(:Julien:) (discussion | contributions)
(:Julien:) (discussion | contributions)
Ligne 94 : Ligne 94 :
Les variables présentées dans ce paragraphe sont des tableaux indicés par le nom de la valeur accédée (une chaîne de caractère).
Les variables présentées dans ce paragraphe sont des tableaux indicés par le nom de la valeur accédée (une chaîne de caractère).


=== '''Variables de sessions''' ===
=== Variables de sessions ===
Lors de la création d'une session ( <tt>session_start()</tt> ), il est possible d'enregistrer des variables (par <tt>session_register('nom_variable') = $variable</tt> ).
Lors de la création d'une session (<tt>session_start()</tt>), il est possible d'enregistrer des variables (par <tt>session_register('nom_variable') = $variable</tt> ).
On peut aussi utiliser le tableau <tt>$_SESSION</tt> pour créer et modifier une variable de session (par exemple : <tt>$_SESSION['ma_variable'] = 3;</tt> )
On peut aussi utiliser le tableau <tt>$_SESSION</tt> pour créer et modifier une variable de session (par exemple : <tt>$_SESSION['ma_variable'] = 3;</tt> )


Ligne 132 : Ligne 132 :
;<tt>'HTTP_CONNECTION'</tt>:Contenu de l'en-tête Connection: de la requête courante, si elle existe. Par exemple : ' Keep-Alive '.
;<tt>'HTTP_CONNECTION'</tt>:Contenu de l'en-tête Connection: de la requête courante, si elle existe. Par exemple : ' Keep-Alive '.
;<tt>'HTTP_HOST'</tt>:Contenu de l'en-tête Host: de la requête courante, si elle existe.
;<tt>'HTTP_HOST'</tt>:Contenu de l'en-tête Host: de la requête courante, si elle existe.
;<tt>'HTTP_REFERER'</tt>:L'adresse de la page (si elle existe) qui a conduit le client à la page courante. Cette valeur est affectée par le client, et tous les clients ne le font pas. Certains navigateur permettent même de modifier la valeur de HTTP_REFERER , sous forme de fonctionnalité. En bref, ce n'est pas une valeur de confiance.
;<tt>'HTTP_REFERER'</tt>:L'adresse de la page (si elle existe) qui a conduit le client à la page courante. Cette valeur est affectée par le client, et tous les clients ne le font pas. Certains navigateur permettent même de modifier la valeur de HTTP_REFERER sous forme de fonctionnalité. En bref, ce n'est pas une valeur de confiance.
;<tt>'HTTP_USER_AGENT'</tt>:Contenu de l'en-tête User_Agent: de la requête courante, si elle existe. C'est une chaîne qui décrit le client HTML utilisé pour voir la page courante. Par exemple : Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586) . Entre autres choses, vous pouvez utiliser cette valeur avec get_browser pour optimiser votre page en fonction des capacités du client.
;<tt>'HTTP_USER_AGENT'</tt>:Contenu de l'en-tête User_Agent: de la requête courante, si elle existe. C'est une chaîne qui décrit le client HTML utilisé pour voir la page courante. Par exemple : Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586). Entre autres choses, vous pouvez utiliser cette valeur avec get_browser pour optimiser votre page en fonction des capacités du client.
;<tt>'HTTP_''header'''</tt>:Valeur de l'en-tête HTTP correspondant envoyé dans la requête du client.
;<tt>'HTTP_''header'''</tt>:Valeur de l'en-tête HTTP correspondant envoyé dans la requête du client.
;<tt>'HTTPS'</tt>:Définissez à une valeur non-vide si le script nécessite d'utiliser le protocole HTTPS.
;<tt>'HTTPS'</tt>:Définissez à une valeur non-vide si le script nécessite d'utiliser le protocole HTTPS.
;<tt>'REMOTE_ADDR'</tt>:L'adresse IP du client qui demande la page courante.
;<tt>'REMOTE_ADDR'</tt>:L'adresse IP du client qui demande la page courante.
;<tt>'REMOTE_HOST'</tt>:Le nom de l'hôte qui lit le script courant. La résolution DNS inverse est basée sur la valeur de REMOTE_ADDR .
;<tt>'REMOTE_HOST'</tt>:Le nom de l'hôte qui lit le script courant. La résolution DNS inverse est basée sur la valeur de REMOTE_ADDR
;<tt>'REMOTE_PORT'</tt>:Le port utilisé par la machine cliente pour communiquer avec le serveur web.
;<tt>'REMOTE_PORT'</tt>:Le port utilisé par la machine cliente pour communiquer avec le serveur web.
;<tt>'SCRIPT_FILENAME'</tt>:Le chemin absolu vers le fichier contenant le script en cours d'exécution.
;<tt>'SCRIPT_FILENAME'</tt>:Le chemin absolu vers le fichier contenant le script en cours d'exécution.
Ligne 146 : Ligne 146 :
;<tt>'SCRIPT_NAME'</tt>:Contient le nom du script courant. Cela sert lorsque les pages doivent s'appeler elles-mêmes. La constante __FILE__ contient le chemin complet ainsi que le nom du fichier (i.e. inclut) courant.
;<tt>'SCRIPT_NAME'</tt>:Contient le nom du script courant. Cela sert lorsque les pages doivent s'appeler elles-mêmes. La constante __FILE__ contient le chemin complet ainsi que le nom du fichier (i.e. inclut) courant.
;<tt>'REQUEST_URI'</tt>:L'URI qui a été fourni pour accéder à cette page. Par exemple : ' /index.html '.
;<tt>'REQUEST_URI'</tt>:L'URI qui a été fourni pour accéder à cette page. Par exemple : ' /index.html '.
;<tt>'PHP_AUTH_DIGEST'</tt>:Lorsque vous utilisez PHP avec Apache en tant que module faisant une identification HTTP Digest , cette variable est définie dans l'en-tête 'Authorization' envoyé par le client (que vous devez donc utiliser pour réaliser la validation appropriée).
;<tt>'PHP_AUTH_DIGEST'</tt>:Lorsque vous utilisez PHP avec Apache en tant que module faisant une identification HTTP Digest cette variable est définie dans l'en-tête 'Authorization' envoyé par le client (que vous devez donc utiliser pour réaliser la validation appropriée).
;<tt>'PHP_AUTH_USER'</tt>:Lorsque vous utilisez PHP avec Apache ou IIS (ISAPI en PHP 5) en tant que module faisant une identification HTTP, cette variable est définie à l'utilisateur fourni par l'utilisateur.
;<tt>'PHP_AUTH_USER'</tt>:Lorsque vous utilisez PHP avec Apache ou IIS (ISAPI en PHP 5) en tant que module faisant une identification HTTP, cette variable est définie à l'utilisateur fourni par l'utilisateur.
;<tt>'PHP_AUTH_PW'</tt>:Lorsque vous utilisez PHP avec Apache ou IIS (ISAPI en PHP 5) en tant que module faisant une identification HTTP, cette variable est définie au mot de passe fourni par l'utilisateur.
;<tt>'PHP_AUTH_PW'</tt>:Lorsque vous utilisez PHP avec Apache ou IIS (ISAPI en PHP 5) en tant que module faisant une identification HTTP, cette variable est définie au mot de passe fourni par l'utilisateur.
Ligne 153 : Ligne 153 :
=== Variables de cookie ===
=== Variables de cookie ===
Le tableau <tt>$_COOKIE</tt> permet de gérér les cookies.
Le tableau <tt>$_COOKIE</tt> permet de gérér les cookies.
Ces cookies sont d'une très grande importance mais sont limités à 20 selon la configuration par défaut de PHP.
Ces cookies sont d'une très grande importance mais sont limités à 20 dans la configuration par défaut de PHP.


=== Variables de requêtes ===
=== Variables de requêtes ===

Version du 21 février 2009 à 00:42

En PHP, les variables sont représentées par un signe dollar "$" suivi du nom de la variable. Le nom est sensible à la casse (par exemple $MaVariable est différent de $mavariable). Dans tous les cas, les variables doivent commencer par une lettre (a-z, A-Z) ou "_" suivi de n'importe quels caractères

    
     $MaVariable // Format correct
     $_MaVariable // Format correct
     $1MaVariable // Format incorrect

Exemple

  <?php
  // Initialisation des variables
  $Prenom = 'Romuald';
  $Age    = '23 ans';
  $Profession = 'informaticien';

  // Affichage
   echo 'Bonjour ' . $Prenom . ', tu as ' . $Age . ' et ta profession est ' . $Profession . '.';
  // Ce qui affichera sur votre navigateur : Bonjour Romuald, tu as 23 ans et ta profession est informaticien.

  // Une autre manière de faire
  echo "Bonjour $Prenom, tu as $Age et ta profession est $Profession";
  // Ce qui affichera sur votre navigateur : Bonjour Romuald, tu as 23 ans et ta profession est informaticien.

  // Subtilité des " et des '
  echo 'Bonjour $Prenom, tu as $Age et ta profession est $Profession';
  // Ce qui affichera sur votre navigateur : Bonjour $Prenom, tu as $Age et ta profession est $Profession
  // Le contenu d'une chaîne construite avec des " sera interprété par PHP et les variables
  // éventuellement utilisées seront remplacées par leurs valeurs.
  ?>

Nota bene: Une variable accolée à du texte est précédée d'un point. Ce dernier sert à la concaténation et dans le cas présent est surtout utile pour indiquer à l'interpréteur que l'on passe du texte, puis à une variable. On lui évite ainsi un temps de réflexion qu'il aurait si l'on avait écrit :

echo "Bonjour $Prenom, tu as $Age et ta profession est $Profession";

Rappel : Le caractère ";" indique qu'il s'agit d'une fin de commande, sans celui-ci l'interpréteur PHP ne comprend pas quand se trouve la fin d'une instruction. Le "<?php" et "?>" indique respectivement qu'il s'agit d'un début de code en PHP et de sa fin.

Types de variables

Contrairement à de nombreux langages de programmation, en PHP il ne faut pas prédéclarer une variable mais celle-ci est typée lors de son instanciation.

$x=1 indique que $x est un entier
$mot='test' indique que $mot est une chaîne

En PHP il y a donc 4 types de variables scalaires

  * entiers: nombres naturels sans décimale (sans virgule)
  * réels: nombres décimaux (on parle généralement de type double, car il s'agit de nombre décimaux à double précision)
  * chaînes de caractères: ensembles de caractères
  * booléens (true ou false où true = vrai et false = faux en français)

Tableaux

En PHP les tableaux sont de type array et leurs contenus peuvent être tous les types de variables possibles.

 $tab[0] = 1;
 $tab[1] = 'test'; //fonctionne aussi
Il en est de même pour les tableaux à deux dimensions.
 $tab[0][0]= 'test';
 $tab[0][1]= 0.0; //réel

En php il est posible d'accéder au contenu d'un tableau de différentes manières :

  • par l'indice ;
  • par la clé.

Création d'un tableau par indice

$tab = array (mixte valeur1,mixte valeur2,...,mixte valeurn);

Création d'un tableau par clé

$tab = array (cle1 => valeur1, cle2 => valeur2, ..., clen => valeurn);

Il existe différentes méthodes liées aux tableaux, des méthodes de tri, de recherche, de concaténation de tableaux, des méthodes d'ajouts et de suppressions d'éléments, etc.

Variables dynamiques

Il est pratique d'avoir parfois des noms de variables qui sont variables. C'est-à-dire un nom de variable qui est affecté et utilisé dynamiquement. La valeur mavariable est affectée à une variable classique appelée a avec l'instruction suivante :

 <?php
   $a="mavariable";
 ?>

Une variable dynamique utilise le nom d'une autre variable. Dans l'exemple ci-dessous, la valeur bonjour est affectée à la variable dynamique $$a, c'est-à-dire à une variable dont le nom est la valeur $a de la variable a. La variable classique a contient la valeur mavariable donc le code :

 <?php
   $$a="bonjour";
 ?>

est équivalent à : $mavariable="bonjour";

Autres variables

Les variables présentées dans ce paragraphe sont des tableaux indicés par le nom de la valeur accédée (une chaîne de caractère).

Variables de sessions

Lors de la création d'une session (session_start()), il est possible d'enregistrer des variables (par session_register('nom_variable') = $variable ). On peut aussi utiliser le tableau $_SESSION pour créer et modifier une variable de session (par exemple : $_SESSION['ma_variable'] = 3; )

Il est également possible de supprimer les sessions courantes dans le code PHP en utilisant la fonction session_destroy(). La destruction de la session en cours peut aussi se faire par la fermeture du navigateur.

Pour supprimer une variable de session sans supprimer la session entière, il suffit d'utiliser la fonction unset($_SESSION['ma_variable']).

Variables de fichiers

Lors d'un téléchargement de fichiers vers le serveur, une variable est assignée aux données de ce fichier. Il s'agit de $_FILES. Elle permet de récupérer le nom du fichier envoyé (exemple: mon_image.png), le nom du fichier temporaire où PHP a copié les données et où il est donc possible de les lire (exemple: C:\temp\T0001AF7.tmp).

Exemple :

 $_FILES['nom_fichier']

Variables d'environnement

Accessibles par $_ENV, cette variable est une 'superglobal', ou globale automatique. Cela signifie qu'elle est simplement disponible dans tous les contextes d'exécution (fonctions ou méthodes).

Variables de serveurs

$_SERVER permet d'obtenir des renseignements sous forme d'un tableau sur le serveur.

'PHP_SELF'
Le nom du fichier du script en cours d'exécution, par rapport à la racine web. Par exemple, $_SERVER['PHP_SELF'] dans le script situé à l'adresse http://www.monsite.com/test.php/foo.bar sera /test.php/foo.bar. La constante __FILE__ contient le chemin complet ainsi que le nom du fichier courant.
'argv'
Tableau des arguments passées au script. Lorsque le script est appelé en ligne de commande, cela donne accès aux arguments, comme en langage C. Lorsque le script est appelé avec la méthode GET, ce tableau contiendra la chaîne de requête.
'argc'
Contient le nombre de paramètres de la ligne de commande passés au script (si le script fonctionne en ligne de commande).
'GATEWAY_INTERFACE'
Numéro de révision de l'interface CGI du serveur : i.e. ' CGI/1.1 '.
'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.
'SERVER_SOFTWARE'
Chaîne d'identification du serveur, qui est donnée dans les en-têtes lors de la réponse aux requêtes.
'SERVER_PROTOCOL'
Nom et révision du protocole de communication : i.e. ' HTTP/1.0 ';
'REQUEST_METHOD'
Méthode de requête utilisée pour accéder à la page; i.e. ' GET ', ' HEAD ', ' POST ', ' PUT '.
'REQUEST_TIME'
Le temps Unix depuis le début de la requête. Disponible depuis PHP 5.1.0.
'QUERY_STRING'
La chaîne de requête, si elle existe, qui est utilisée pour accéder à la page.
'DOCUMENT_ROOT'
La racine sous laquelle le script courant est exécuté, comme défini dans la configuration du serveur.
'HTTP_ACCEPT'
Contenu de l'en-tête Accept: de la requête courante, s'il y en a une.
'HTTP_ACCEPT_CHARSET'
Contenu de l'en-tête Accept-Charset: de la requête courante, si elle existe. Par exemple : ' iso-8859-1,*,utf-8 '.
'HTTP_ACCEPT_ENCODING'
Contenu de l'en-tête Accept-Encoding: de la requête courante, si elle existe. Par exemple : ' gzip '.
'HTTP_ACCEPT_LANGUAGE'
Contenu de l'en-tête Accept-Language: de la requête courante, si elle existe. Par exemple : ' fr '.
'HTTP_CONNECTION'
Contenu de l'en-tête Connection: de la requête courante, si elle existe. Par exemple : ' Keep-Alive '.
'HTTP_HOST'
Contenu de l'en-tête Host: de la requête courante, si elle existe.
'HTTP_REFERER'
L'adresse de la page (si elle existe) qui a conduit le client à la page courante. Cette valeur est affectée par le client, et tous les clients ne le font pas. Certains navigateur permettent même de modifier la valeur de HTTP_REFERER sous forme de fonctionnalité. En bref, ce n'est pas une valeur de confiance.
'HTTP_USER_AGENT'
Contenu de l'en-tête User_Agent: de la requête courante, si elle existe. C'est une chaîne qui décrit le client HTML utilisé pour voir la page courante. Par exemple : Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586). Entre autres choses, vous pouvez utiliser cette valeur avec get_browser pour optimiser votre page en fonction des capacités du client.
'HTTP_header'
Valeur de l'en-tête HTTP correspondant envoyé dans la requête du client.
'HTTPS'
Définissez à une valeur non-vide si le script nécessite d'utiliser le protocole HTTPS.
'REMOTE_ADDR'
L'adresse IP du client qui demande la page courante.
'REMOTE_HOST'
Le nom de l'hôte qui lit le script courant. La résolution DNS inverse est basée sur la valeur de REMOTE_ADDR
'REMOTE_PORT'
Le port utilisé par la machine cliente pour communiquer avec le serveur web.
'SCRIPT_FILENAME'
Le chemin absolu vers le fichier contenant le script en cours d'exécution.
'SERVER_ADMIN'
La valeur donnée à la directive SERVER_ADMIN (pour Apache), dans le fichier de configuration. Si le script est exécuté par un hôte virtuel, ce sera la valeur définie par l'hôte virtuel.
'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é.
'SERVER_SIGNATURE'
Chaîne contenant le numéro de version du serveur et le nom d'hôte virtuel, qui sont ajoutés aux pages générées par le serveur, si cette option est activée.
'PATH_TRANSLATED'
Chemin dans le système de fichier (pas le document-root) jusqu'au script courant, une fois que le serveur a fait une traduction chemin virtuel -> réel.
'SCRIPT_NAME'
Contient le nom du script courant. Cela sert lorsque les pages doivent s'appeler elles-mêmes. La constante __FILE__ contient le chemin complet ainsi que le nom du fichier (i.e. inclut) courant.
'REQUEST_URI'
L'URI qui a été fourni pour accéder à cette page. Par exemple : ' /index.html '.
'PHP_AUTH_DIGEST'
Lorsque vous utilisez PHP avec Apache en tant que module faisant une identification HTTP Digest cette variable est définie dans l'en-tête 'Authorization' envoyé par le client (que vous devez donc utiliser pour réaliser la validation appropriée).
'PHP_AUTH_USER'
Lorsque vous utilisez PHP avec Apache ou IIS (ISAPI en PHP 5) en tant que module faisant une identification HTTP, cette variable est définie à l'utilisateur fourni par l'utilisateur.
'PHP_AUTH_PW'
Lorsque vous utilisez PHP avec Apache ou IIS (ISAPI en PHP 5) en tant que module faisant une identification HTTP, cette variable est définie au mot de passe fourni par l'utilisateur.
'AUTH_TYPE'
Lorsque vous utilisez PHP avec Apache en tant que module faisant une identification HTTP, cette variable est définie au type d'identification.

Variables de cookie

Le tableau $_COOKIE permet de gérér les cookies. Ces cookies sont d'une très grande importance mais sont limités à 20 dans la configuration par défaut de PHP.

Variables de requêtes

$_REQUEST est un tableau associatif constitué du contenu des variables $_GET, $_POST, $_COOKIE.

Variables globales

$_GLOBAL est une superglobale, l'enregistrement dans cette variable permet de récupérer la valeur n'importe quand.