PHP contient des variables appelées superglobales qui contiennent plein d'informations sur la vie de votre application : les cookies gérés, des informations sur le serveur, des informations sur l'utilisateur/le client, des données qui transitent... Elles sont accessibles partout dans le code, et comme leur nom l'indique, elles sont super-globales : plus "puissantes" que le scope global, on peut les lire de partout, même dans une fonction par exemple :
Il n'est pas nécessaire de faire global $variable; pour y accéder dans les fonctions ou les méthodes.
Superglobale | Description |
---|---|
$GLOBALS |
Liste les variables disponibles dans le contexte global de l'application |
$_SERVER |
Contient des informations comme les en-tête, dossier, chemin du script. Informations générées par le serveur |
$_REQUEST |
Un tableau associatif qui contient par défaut le contenu des variables $_GET , $_POST et $_COOKIE . |
$_POST |
Contient les variables POST passées via une requête HTTP |
$_GET |
Contient les variables GET passées via une requête HTTP |
$_FILES |
Contient les fichiers uploadés au serveur passés par la méthode POST |
$_ENV |
Contient les variables d'environnement qui gravitent autour du script PHP : les variables shell, le système d'exploitation... |
$_COOKIE |
Tableau de cookies envoyés par HTTP |
$_SESSION |
Tableau de valeurs stockées en session, c'est à dire n'existant que pour l'utilisateur courant et durant une période limitée (son temps de connexion environ par défaut) |
GET et POST sont deux méthodes HTTP, c'est à dire des manières de transmettre des choses via le protocole HTTP, en plus clair, deux façons d'envoyer une donnée d'une page à une autre.
Par exemple, lorsque l'on clique sur l'article 2 de la page d'accueil d'un blog, on transmet à la page suivante que l'on souhaite lire l'article 2 ! La page suivante récupère cette donnée, et nous affiche l'article 2. En général, on utilise
GET
.
Lorsque l'on saisit nos identifiants dans un formulaire : on envoie une donnée, contenue dans les champs du formulaire, à une autre page qui récupère cette donnée et la traite (par exemple, elle vérifie si l'e-mail existe et si le mot de passe est correct). En général, on utilise
POST
.
Les variables GET
sont transmises via... l'URL ! C'est pour cela qu'on voit parfois des URL très longues sur certains sites (par exemple, un résultat de recherche Google) : des données sont en fait transmises via l'URL.
Voici comment sont transmises les données :
http://localhost/test.php?key=value
http://localhost/test.php?id=3
http://localhost/test.php?prenom=Thomas
http://localhost/test.php?film=Batman%20Begins
Il s'agit d'une paire de key
=value
contenue dans l'URL.
En fait, on envoie à test.php
la donnée key
=value
.
Attention : Notez bien le
?
entre le nom du fichier et la variable !
Attention: Remarquez que les clés ne sont pas des variables PHP, il n'y a pas besoin de signe
$
!
Note: Pourquoi il y a t-il un signe
%20
dans le dernier exemple ? Il s'agit du caractèreespace
encodé pour l'URL ! Pas besoin de les retenir tous : on peut simplement taper son texte dans l'URL qui convertira automatiquement les caractères spéciaux.
Pour récupérer la variable dans le fichier test.php
, on utilise la superglobale $_GET
. Par exemple, en allant sur test.php
via cette URL :
http://localhost/test.php?year=2020
echo "Voici les articles de l'année " . $_GET['year'];
Qui affichera :
Voici les articles de l'année 2020
En fait, $_GET
est un array qui contient les variables passées en paramètres GET, c'est à dire dans l'URL.
On peut bien sûr utiliser plusieurs variables dans l'URL ! Pour cela, il suffit de séparer les couples de key
=value
par des signes &
. Exemple :
http://localhost/test.php?key1=value1&key2=value2
http://localhost/test.php?id=3&title=fromage
http://localhost/test.php?prenom=Thomas&nom=Dupont
http://localhost/test.php?film=Batman%20Begins&year=2005
Les variables POST sont dédiées aux données transmises depuis un formulaire : on aura donc besoin de deux pages : une page formulaire, et une page de traitement.
form.php
<html>
<body>
<form action="login.php" method="post">
<input type="email" placeholder="Adresse e-mail" name="email">
<input type="password" placeholder="Mot de passe" name="password">
<button type="submit">Connexion</button>
</form>
</body>
</html>
login.php
<?php
echo "Votre e-mail est " . $_POST['email'] . ". Vous êtes bien connecté ! Votre mot de passe est secret, mais au cas où, il s'agit de " . $_POST['password'];
?>
Attention : Pour transmettre une variable depuis
form.php
, il faut ABSOLUMENT préciser le champname
dans l'input du formulaire. Ainsi, danslogin.php
, on récupèrera la variable par sakey
du tableau$_POST
, c'est à dire lename
passé dans le formulaire (ici:password
).