Skip to content

Instantly share code, notes, and snippets.

@tomsihap
Created January 23, 2020 11:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tomsihap/8a949c500766d23baefaff5d9d017cb9 to your computer and use it in GitHub Desktop.
Save tomsihap/8a949c500766d23baefaff5d9d017cb9 to your computer and use it in GitHub Desktop.
GET et POST

GET, POST et les superglobales

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.

Superglobales

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

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.

Variables GET

Transmettre une variable

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ère espace 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.

Récupérer une variable

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.

Utiliser plusieurs variables

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

Variables POST

Transmettre et récupérer une variable

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 champ name dans l'input du formulaire. Ainsi, dans login.php, on récupèrera la variable par sa key du tableau $_POST, c'est à dire le name passé dans le formulaire (ici: email et password).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment