Modular Business

Tel: 00212 648154672 | Mail: Hamza.Abdeljabbar@gmail.com



Trackin

php019

Voici le tutorial concernant les variables globales.
Ceci n'est pas vraiment un tutorial, mais plutôt une note d'information.

En effet, depuis la version 4.2.0 de PHP, un paramètre de la configuration de PHP (celui concernant les variables globales) est initialisé par défaut à la valeur OFF lors de l'installation (ce qui implique que les variables globales ne sont pas activées) alors qu'auparavant, il était initialisé à ON (là, les variables globales sont activées).

En conséquence, suivant votre hébergeur, et donc de sa configuration de PHP, il se pourrait très bien que tout ce que vous avez vu jusque là ne fonctionne pas sur votre site.

Cependant, cette différence d'initialisation de paramètre n'influence que sur la méthode permettant de récupérer les variables, que ce soit :
- des variables provenant de formulaires POST ou GET
- la valeur des cookies
- des variables de sessions
- des variables d'environnement
- des variables de serveurs

Comme vous le savez, auparavant, pour récupérer nos variables, on les appelait simplement avec un $ suivi de leur nom.

Dans le cas où les variables globales ne sont activées, vous ne pouvez plus utiliser cette méthode afin de récupérer vos variables.

En effet, maintenant, nous récupérerons toutes cas variables et toutes ces valeurs par le biais de tableaux associatifs, que l'on résumer ainsi :


:: Tableaux associatifs :: :: Description ::
$_GET Récupération des variables d'un formulaire GET ou des variables passées par une URL
$_POST Récupération des variables passées par un formulaire POST
$_FILES Récupération des variables de fichiers envoyés par un formulaire
$_COOKIE Récupération des valeurs des cookies
$_SESSION Récupération des variables de session
$_ENV Récupération des variables d'environnement
$_SERVER Récupération des variables serveur


Voyons alors maintenant, cas par cas, comment récupérer ces variables et ces valeurs.

Le cas des formulaires GET (ou des variables passées par une URL) :

Supposons que l'on a une page index.htm contenant un formulaire permettant de saisir un login ainsi qu'un mot de passe.
On pourrait alors très bien avoir une page ressemblant à :

exemple1
  1. <html>
  2. <head>
  3. <title>Formulaire d'identification</title>
  4. </head>
  5.  
  6. <body>
  7. <form action="login.php" method="get">
  8. Votre identifiant : <input type="text" name="login">
  9. <br />
  10. Votre mot de passe : <input type="password" name="pwd"><br />
  11. <input type="submit" value="Connexion">
  12. </form>
  13.  
  14. </body>
  15. </html> 

Pour récupérer nos variables correspondant aux champs login et pwd, nous allons utiliser le tableau associatif $_GET.

On aura lors, par exemple, la page login.php suivante :

exemple2
  1. <html>
  2. <head>
  3. <title>Page de récupération des variables</title>
  4. </head>
  5.  
  6. <body>
  7. <?php
  8. // On teste si nos variables sont déclarées  
  9. if (isset($_GET['login']) && isset($_GET['pwd'])) { 
  10.  
  11.       // On fait ce que l'on veut ensuite  
  12.       echo 'Votre login est '.$_GET['login'].' Et votre mot de passe est '.$_GET['pwd'];  
  13. }  
  14. else { 
  15.       echo 'Les variables du formulaire ne sont pas déclarées.';  
  16. }  
  17. ?>
  18. </body>
  19. </html> 


Simple, non ?

Précisons également, que lorsque l'on passe des variables par une URL, la méthode ne change absolument pas.

En effet, imaginons la page index.htm suivante :

exemple3
  1. <html>
  2. <head>
  3. <title>Juste un lien </title>
  4. </head>
  5.  
  6. <body>
  7. <a href="./login.php?login=GLOBULE&pwd=haha">Notre lien</a>
  8. </body>
  9. </html> 


Et bien en gardant la même page login.php que précédemment, l'affichage de la page login.php serait strictement identique que dans le cas du formulaire GET.


Le cas des formulaires POST :

La méthode et strictement identique que le cas des formulaires GET, sauf, naturellement, au lieu d'utiliser le tableau associatif $_GET, nous allons ici utiliser le tableau associatif $_POST.

En reprenant les mêmes exemples que précédemment, on aurait alors :

- la page index.htm

exemple4
  1. <html>
  2. <head>
  3. <title>Formulaire d'identification</title>
  4. </head>
  5.  
  6. <body>
  7. <form action="login.php" method="post">
  8. Votre identifiant : <input type="text" name="login">
  9. <br />
  10. Votre mot de passe : <input type="password" name="pwd"><br />
  11. <input type="submit" value="Connexion">
  12. </form>
  13.  
  14. </body>
  15. </html> 


- la page login.php

exemple5
  1. <html>
  2. <head>
  3. <title>Page de récupération des variables</title>
  4. </head>
  5.  
  6. <body>
  7. <?php
  8. // On teste nos deux variables  
  9. if (isset($_POST['login']) && isset($_POST['pwd'])) { 
  10.  
  11.       // On fait ce que l'on veut ensuite  
  12.       echo 'Votre login est '.$_POST['login'].' Et votre mot de passe est '.$_POST['pwd'];  
  13. }  
  14. else { 
  15.       'Les variables du formulaire ne sont pas déclarées.';  
  16. }  
  17. ?>
  18. </body>
  19. </html>
Récupération d'un fichier par le biais d'un formulaire :

Supposons que l'on dispose d'un formulaire nous permettant d'envoyer un fichier.
On pourrait alors très bien avoir une page index.htm ressemblant à :

exemple6
  1. <html>
  2. <head>
  3. <title>Formulaire permettant d'envoyer un fichier</title>
  4. </head>
  5.  
  6. <body>
  7. <form action="send_fichier.php" method="post" ENCTYPE="multipart/form-data">
  8. Votre fichier : <input type="file" name="mon_fichier">
  9. <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="20000">
  10. <input type="submit" value="Envoyer">
  11. </form>
  12.  
  13. </body>
  14. </html> 


Dans la page send_fichier.php, on a alors accès aux différentes valeurs (suivant les indices) prises par le tableau associatif $_FILES.

Voici les valeurs que contient ce tableau (suivant les différents indices) :

:: Valeur du tableau :: :: Description ::
$_FILES['nom_de_la_variable']['name'] Le nom original du fichier qui provient de la machine du client
$_FILES['nom_de_la_variable']['type'] Le type MIME du fichier
$_FILES['nom_de_la_variable']['size'] La taille du fichier en bytes (soit 8 bits ou un octet)
$_FILES['nom_de_la_variable']['tmp_name'] Le nom temporaire du fichier stocké sur le serveur
$_FILES['nom_de_la_variable']['error'] Le code erreur associé à l'upload


Pour afficher ces valeurs, on pourrait très bien le code de la page send_fichier.php qui ressemble à :

exemple7
  1. <html>
  2. <head>
  3. <title>Page de récupération du fichier</title>
  4. </head>
  5.  
  6. <body>
  7. <?php
  8. // On teste les différentes valeurs  
  9. if (isset($_FILES['mon_fichier']['name']) && isset($_FILES['mon_fichier']['size']) && isset($_FILES['mon_fichier']['tmp_name']) && isset($_FILES['mon_fichier']['type']) && isset($_FILES['mon_fichier']['error'])) { 
  10.  
  11.       // On affiche ces différentes valeurs 
  12.       echo 'Nom d'origine : '.$_FILES['mon_fichier']['name'].'<br />'; 
  13.       echo 'Taille : '.$_FILES['mon_fichier']['size'].'<br />'; 
  14.       echo 'Nom sur le serveur : '.$_FILES['mon_fichier']['tmp_name'].'<br />'; 
  15.       echo 'Type de fichier : '.$_FILES['mon_fichier']['type'].'<br />'; 
  16.       echo 'Code erreur : '.$_FILES['mon_fichier']['error'].'<br />';  
  17. }  
  18. else { 
  19.       echo 'Nos variables ne sont pas déclarées.';  
  20. }  
  21. ?>
  22. </body>
  23. </html>
Les cookies :

Supposons que nous disposons d'une page send_cookie.php qui nous permet d'envoyer un cookie contenant le nom d'un visiteur.
On aurait alors par exemple :

exemple8
  1. <?php
  2. $temps = 365*24*5500;  
  3. setcookie ("pseudo", "LA GLOBULE", time() + $temps);  
  4.  
  5. header ('Location : index.php');  
  6. ?>
Ensuite, nous allons récupérer la valeur du cookie dans la page index.php, grâce au tableau associatif $_COOKIE.
On pourrait alors avoir le code suivant :

exemple9
  1. <html>
  2. <head>
  3. <title>Page de récupération du cookie</title>
  4. </head>
  5.  
  6. <body>
  7. <?  
  8. // On teste notre cookie  
  9. if (isset($_COOKIE['pseudo'])) { 
  10.       echo 'Votre nom est '.$_COOKIE['pseudo'];  
  11. }  
  12. else { 
  13.       echo 'Cookie non déclaré';  
  14. }  
  15. ?>
  16. </body>
  17. </html> 



Les variables de sessions :

Supposons que l'on a le même formulaire d'identification que dans le tutorial consacré aux sessions.
On aura alors :

- la page index.htm

exemple10
  1. <html>
  2. <head>
  3. <title>Formulaire d'identification</title>
  4. </head>
  5.  
  6. <body>
  7. <form action="login.php" method="post">
  8. Votre login : <input type="text" name="login">
  9. <br />
  10. Votre mot de passé : <input type="password" name="pwd"><br />
  11. <input type="submit" value="Connexion">
  12. </form>
  13.  
  14. </body>
  15. </html> 


Là, on remarque aucun changement.

- la page login.php

exemple11
  1. <?php
  2. // On teste nos variables du formulaire d'authentification par le biais du tableau associatif $_POST  
  3. if (isset($_POST['login']) && isset($_POST['pwd'])) { 
  4.  
  5.       // On définit un login et un mot de passe de base pour tester notre exemple. Cependant, vous pouvez très bien interroger votre base de données afin de savoir si le visiteur qui se connecte est bien membre de votre site 
  6.       $login_valide = "moi"; 
  7.       $pwd_valide = "lemien"; 
  8.  
  9.       // on vérifie les informations du formulaire, à savoir si le pseudo saisi est bien un pseudo autorisé, de même pour le mot de passe 
  10.       if ($login == $_POST['login'] && $pwd == $_POST['pwd']) { 
  11.          // dans ce cas, tout est ok, on peut démarrer notre session 
  12.  
  13.          // on la démarre  
  14.          session_start (); 
  15.          // on enregistre les paramètres de notre visiteur comme variables de session ($_POST['login'] et $_POST['pwd']) 
  16.          $_SESSION['login'] = $_POST['login']; 
  17.          $_SESSION['pwd'] = $_POST['pwd']; 
  18.  
  19.          // on redirige notre visiteur vers une page de notre section membre 
  20.          header ('location : page_membre.php'); 
  21.       } 
  22.       else { 
  23.          // Le visiteur n'a pas été reconnu comme étant membre de notre site. On utilise alors un petit javascript lui signalant ce fait 
  24.          echo '<body onLoad="alert('Membre non reconnu...')">'; 
  25.          // puis on le redirige vers la page d'accueil 
  26.          header ('location : index.htm'); 
  27.       }  
  28. }  
  29. else { 
  30.       echo 'Les variables du formulaire ne sont pas déclarées.';  
  31. }  
  32. ?>
Là encore, aucun changement, à part que l'on utilise le tableau associatif $_POST pour récupérer les valeurs que le visiteur a saisi dans le formulaire d'identification.

- la page page_membre.php

exemple12
  1. <?php
  2. // On démarre la session (ceci est indispensable dans toutes les pages de notre section membre)  
  3. session_start ();  
  4.  
  5. // On teste pour voir si nos variables ont bien été enregistrées  
  6. echo '<html>';  
  7. echo '<head>';  
  8. echo '<title>Page de notre section member</title>';  
  9. echo '</head>';  
  10.  
  11. echo '<body>';  
  12.  
  13. // On teste nos variables de session  
  14. if (isset($_SESSION['login']) && isset($_SESSION['pwd'])) { 
  15.  
  16.       // On gère notre affichage 
  17.       echo 'Votre login est '.$_SESSION['login'].' et votre mot de passe est '.$_SESSION['pwd'].'.'; 
  18.       echo '<br />'; 
  19.  
  20.       // On affiche un lien pour fermer notre session 
  21.       echo '<a href="./logout.php">Déconnection</a>';  
  22. }  
  23. else { 
  24.       echo 'Les variables de sessions ne sont pas déclarées.';  
  25. }  
  26. echo '</body>';  
  27. echo '</html>';  
  28. ?>
Là enfin, on utilise le tableau associatif $_SESSION pour récupérer nos deux variables de sessions : login et pwd.


Les variables d'environnement :

Dans ce cas, rien de plus simple, puisque pour afficher le contenu d'une variable d'environnement, il suffit d'écrire $_ENV puis le nom de la variable que l'on désire afficher entre crochet.

Exemples :

exemple13
  1. <?php
  2. echo 'Système d'exploitation : '.$_ENV['OS'];  
  3. echo '<br /><br />';  
  4. echo 'Chemin du profil utilisateur : '.$_ENV['USERPROFILE'];  
  5. ?>
Les variables de serveur :

On procède de la même manière que pour les variables d'environnement.

Exemples :

exemple14
  1. <?php
  2. echo 'Chemin du script courant : '.$_SERVER['PHP_SELF'];  
  3. echo '<br /><br />';  
  4. echo 'Adresse IP du client : '.$_SERVER['REMOTE_ADDR'];  
  5. ?> 



Pour récupérer plus rapidement ces variables :

Afin de récupérer facilement et rapidement vos variables, vous pouvez utiliser la fonction extract.
En effet, cette fonction exporte vos tableaux associatifs en créant une variable pour chaque indice de vos tableaux.

Par exemple, si on a une page index.htm contenant un formulaire à méthode POST, et que dans votre page login.php (ciblée par le champ ACTION du formulaire) vous traitez ces variables, vous pouvez écrire la ligne suivante (dans la page login.php, en tout début de page) :

exemple15
  1. <?php
  2. extract ($_POST, EXTR, OVERWRITE);  
  3. ?>
Ce qui va créer des variables qui contiendront comme valeur les différentes valeurs du tableau associatif $_POST.
Variables qui auront comme nom, la valeur de chacun des indices du tableau associatif $_POST.

Ceci implique que si l'on a un formulaire de type POST, avec, mettons un champ de name login et un autre de name pwd, et bien au lieu de récupérer à chaque fois la valeur des variables à la main, par le biais du tableau associatif $_POST, cette fonction nous permet d'obtenir directement des variables $login et $pwd (au lieu des valeurs de tableau $_POST['login'] et $_POST['pwd']).

Exemple :

- la page index.htm

exemple16
  1. <html>
  2. <head>
  3. <title>Formulaire d'identification</title>
  4. </head>
  5.  
  6. <body>
  7. <form action="login.php" method="post">
  8. Votre identifiant : <input type="text" name="login">
  9. <br />
  10. Votre mot de passe : <input type="password" name="pwd"><br />
  11. <input type="submit" value="Connexion">
  12. </form>
  13.  
  14. </body>
  15. </html> 


- la page login.php

exemple17
  1. <html>
  2. <head>
  3. <title>Page de récupération des variables</title>
  4. </head>
  5.  
  6. <body>
  7. <?php
  8. // On récupère nos deux variables  
  9. extract ($_POST, EXTR, OVERWRITE);  
  10.  
  11. // On fait ce que l'on veut ensuite  
  12. echo 'Votre login est '.$login.' Et votre mot de passe est '.$pwd;  
  13. ?>
  14. </body>
  15. </html> 


En clair, extract à créer :
- une variable $login comprenant la valeur de tableau $_POST['login']
- une variable $pwd comprenant la valeur de tableau $_POST['pwd']

Le second argument de la fonction sert à gérer les collisions de variables.

Voici les valeurs possibles du second argument de extract :

:: Valeurs :: :: Description ::
EXTR_OVERWRITE Ecrase les variables déjà existantes
EXTR_SKIP N'écrase pas les variables déjà existantes
EXTR_PREFIX_SAME Si une variable de même nom existe déjà, une nouvelle variable sera créée avec un préfixe donné en troisième argument à extract
EXTR_PREFIX_ALL Cela crée de nouvelles variables avec le préfixe passé en troisième argument pour toutes les indices du tableau
EXTR_PREFIX_INVALID Cela crée de nouvelles variables avec le préfixe passé en troisième argument pour les noms de variables invalides (voir le tutorial sur les déclarations de variables)


Meilleurs partenaires Trackin VIP


Vous êtes un membre ?

Veuillez s’inscrire si vous ne disposez pas d’un compte sur le site pour profiter des meilleurs services du webmastering au but de perfectionner votre site web, avoir quelques aides à propos de votre site ...

Ce site web a été créé gratuitement avec Ma-page.fr. Tu veux aussi ton propre site web ?
S'inscrire gratuitement