Les variables superglobales sont :
* $_GET
* $_POST
* $_COOKIE
* $_SESSION
* $_ENV
* $_SERVER
Nous avons déjà manipulé les variables $_GET et $_POST vous les reconnaissez donc.
On va voir $_COOKIE et $_SESSION car elles sont les plus intéressantes à mon avis.
Mais avant sachez que les superglobales sont écrites en majuscules et commencent toutes par un _ (le trait
de soulignement).
Les superglobales sont toutes des array.
Ces variables sont automatiquement créées par PHP à chaque fois qu'une page est chargée. Ces variables existent
donc sur toutes les pages et sont accessibles partout d’où le nom globale.
$_SERVER : ce sont des valeurs utiles que nous donne le serveur.
Pour accéder à ces informations, il faut indiquer ce qu'on demande exactement entre crochets (vu que c'est un
array). Voici quelques-unes dont vous aurez peut-être à vous servir :
* $_SERVER['PHP_SELF'] : c'est le chemin de la page que vous êtes en train d'exécuter, par rapport à la
racine de votre site web.
* $_SERVER['HTTP_REFERER'] : c'est l'url de la page qui a amené le visiteur sur la page courante. Cela peut
être utile notamment pour faire des statistiques : vous saurez par exemple que tel site
a fait un lien vers votre site et vous amène des visiteurs.
* $_ENV : ce sont des variables d'environnement, toujours données par le serveur.
* # $_GET : Vous donne les valeurs des informations indiquées dans l'url.
Par exemple, si la page appelée est :
http://www.site.com/ma-page.php?jour=18&mois=avril&annee=2000
... on aura une superglobale $_GET en 3 parties :
$_GET['jour'] = "18"
$_GET['mois'] = "avril"
$_GET['annee'] = "2000"
# $_POST : c'est là-dedans que vous venez récupérer les informations issues d'un formulaire.
* # $_FILES : cette superglobale est utilisée lorsqu'on envoie des fichiers sur le serveur à partir d'un
formulaire.
* # $_SESSION : c'est là-dedans que l'on retrouve les variables de session. Nous allons voir ce qu'est une
session en PHP plus loin dans ce chapitre.
* # $_COOKIE : de même, c'est là-dedans que l'on retrouve les valeurs des cookies enregistrés sur l'ordinateur
du visiteur. Nous étudierons les cookies dans ce chapitre.
Les sessions
Les sessions sont un moyen de conserver des variables sur toutes les pages de votre site.
Jusqu'ici, on était arrivés à passer des variables de page en page via la méthode GET
(en modifiant l'url : page.php?variable=valeur) et via la méthode POST (un formulaire quoi).
Mais si on veut transmettre une ou plusieurs variables sur TOUTES les pages de son site, c'est très lourd
avec GET et POST... D'où l'invention des sessions.
Que faire ?
1. Un visiteur se connecte. On demande à créer une session pour lui : PHP génère un numéro. Pour cela, on
utilise la fonction session_start(). Ce numéro est souvent très gros et écrit en hexadécimal.
Ce numéro est l’ID de la page il sert d’identifiant.
PHP transmet automatiquement cet ID de page en page en utilisant un cookie ou via l'url.
2. A partir de là, on peut créer une infinité de variables de session. Par exemple : $_SESSION['login']
contient le login du visiteur, $_SESSION['password'] contient le mot de passe etc...
L'avantage, c'est que le serveur conserve ces variables même lorsque la page PHP a fini d'être générée.
Ce qui veut dire que, quelle que soit la page de votre site, vous pourrez récupérer par exemple le login
et le mot de passe du visiteur !
3. Lorsque le visiteur se déconnecte (il a cliqué sur un bouton "Déconnecter" ou est resté inactif trop
longtemps), alors la session est fermée avec session_destroy()
Mais il faut appeler session_start() sur chacune de vos pages AVANT d'écrire le moindre code HTML.
Si vous oubliez session_start(), vous ne pourrez pas accéder aux variables superglobales $_SESSION.
Code PHP :
<?php
session_start(); // On démarre la session AVANT toute chose
//Pour cet exemple on crée quelques variables de session :
$_SESSION['prenom'] = 'carlos';
$_SESSION['nom'] = 'roberto';
$_SESSION['age'] = 32;
// Maintenant que la session_start est là, on peut écrire du code HTML
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Titre de la page</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<p>
Bonjour ! <?php echo $_SESSION['prenom']; ?> !<br />
Tu es ici à l'accueil du site (index.php). Tu veux aller sur une autre page ?
</p>
<p>
<a href="mapage1.php">Lien vers mapage1.php</a><br />
<a href="mapage2.php">Lien vers mapage2.php</a><br />
<a href="mapage3.php">Lien vers mapage3.php</a><br />
</p>
</body>
</html>
On peut créer des variables de session n'importe où dans le code. Ici je les ai créé en haut de la page,
mais j'aurais pu le faire ailleurs.
La seule chose qui importe, c'est que le session_start() soit fait au tout début de la page.
Avec la superglobale nous créons les lien tout simplement sans avoir besoin de transmettre ni ID du visiteur
ni pseudo ni rien dés que la session_start() est là PHP s’occupe de tout automatiquement sur toute page de
votre site.
Alors un exemple enregistrez cette page sous le nom mapage1.php dans le même répertoire que la précédente et
testez le code.
Code PHP :
<?php
session_start(); // On démarre la session AVANT toute chose
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Titre de la page</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<p>Re-bonjour !</p>
<p>
PHP se souvient de toi ! Tu t'appelles
<?php echo $_SESSION['prenom'] . ' ' . $_SESSION['nom']; ?> !<br />
Et ton âge hummm... Tu as <?php echo $_SESSION['age']; ?> ans, n'est ce pas ?
</p>
</body>
</html>
Et bien PHP s’est occupé de tout transmettre ?
En résumé, si vous créez des variables que vous voulez transmettre sur toutes les pages du site vous faites
comme vous créeriez des variables normales, sauf que vous mettez le préfixe $_SESSION devant pour que PHP
sache qu'il doit "retenir" ces variables sur toutes les pages.
Exemple :
$_SESSION['prenom'] = 'carlos';
$_SESSION['nom'] = 'roberto';
$_SESSION['age'] = 32;
Les cookies.
Un cookie, c'est un petit fichier que l'on enregistre sur l'ordinateur du visiteur.
Il permet de "retenir" des informations sur le visiteur.
Par exemple, vous inscrivez dans un cookie le pseudo du visiteur, comme ça la prochaine fois qu'il viendra sur
votre site vous pourrez lire son pseudo en allant regarder ce que son cookie contient.
Ce ne sont pas des virus ou des scriptes malicieux, c’est juste des petits fichiers textes qui permettent
de retenir des informations.
Rassurez-vous ils sont inoffensif.
Internet Explorer les stocke dans le dossier "Temporary Internet Files".
Pour écrire un cookie, on utilise la fonction PHP setcookie ("Placer un cookie" en anglais).
On lui donne en général 3 paramètres, dans l'ordre suivant :
1. Le nom du cookie (ex : "pseudo")
2. La valeur du cookie (ex : "carabde")
3. La date d'expiration du cookie, sous forme de timestamp (ex : 1542041013)
Un cookie a une durée de vie limitée.
Il est automatiquement "supprimé" au bout d'un certain temps.
Si vous voulez supprimer le cookie dans un mois, il vous faudra faire :
time() + 30*24*3600
Cela veut dire : timestamp actuel + nombre de secondes dans un mois. Cela aura pour effet de voir votre cookie
disparaître dans exactement un mois.
Là aussi, comme pour session_start, la fonction setcookie ne marche que si vous la mettez avant tout code HTML.
Code PHP :
<?php
$timestamp_expire = time() + 365*24*3600; // Le cookie expirera dans un an
setcookie('pseudo', 'carabde, $timestamp_expire); // On écrit un cookie
setcookie('pays', 'France', $timestamp_expire); // On écrit un autre cookie...
// Maintenant, on peut écrire du code html
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Ma super page PHP</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
</body>
</html>
Si je veux ressortir le pseudo du visiteur que j'avais inscrit dans un cookie, il suffirait d'écrire :
$_COOKIE['pseudo']
Code PHP :
<p>
Je me souviens de toi !<br />
Tu t'appelles <?php echo $_COOKIE['pseudo']; ?>
et ton payé est : <?php echo $_COOKIE['pays']; ?> ?
</p>
Si le cookie n'existe pas, la variable superglobale n'existe pas. C'est-à-dire vous n’avez pas placé
de cookie ou il a été supprimé par le visiteur.
Retourner au haut de la page..
|