retour
01/03
section 01

$_GET et $_POST : donnees de formulaires

Connectez-vous pour sauvegarder votre progression et acceder aux quiz
Se connecter

Les superglobales sont des variables speciales de PHP accessibles partout dans le code, sans import. Elles contiennent les donnees envoyees par le navigateur (formulaires, cookies, fichiers, etc.).

Les superglobales PHP

VariableContenu
$_GETParametres dans l'URL (?cle=valeur)
$_POSTDonnees envoyees via formulaire POST
$_REQUESTFusion de $_GET, $_POST et $_COOKIE
$_SESSIONDonnees de session (cote serveur)
$_COOKIECookies (cote client)
$_FILESFichiers uploades
$_SERVERInformations serveur et requete
$_ENVVariables d'environnement

$_GET : parametres d'URL

php<?php
// URL : http://monsite.fr/recherche.php?q=php&page=2

$recherche = $_GET['q'] ?? '';      // "php"
$page = (int) ($_GET['page'] ?? 1); // 2

echo "Recherche : $recherche, Page : $page";
?>

<!-- Formulaire GET (visible dans l'URL) -->
<form method="GET" action="recherche.php">
    <input type="text" name="q" placeholder="Rechercher...">
    <select name="categorie">
        <option value="tout">Toutes categories</option>
        <option value="cours">Cours</option>
        <option value="quiz">Quiz</option>
    </select>
    <button type="submit">Rechercher</button>
</form>

<?php
// Traitement
if (!empty($_GET['q'])) {
    $q = htmlspecialchars($_GET['q']); // SECURITE : echappement
    $categorie = $_GET['categorie'] ?? 'tout';
    echo "Resultats pour : $q (categorie : $categorie)";
}
?>

$_POST : donnees de formulaire

php<!-- Formulaire POST (donnees invisibles dans l'URL) -->
<form method="POST" action="inscription.php">
    <label>Nom :</label>
    <input type="text" name="nom" required>

    <label>Email :</label>
    <input type="email" name="email" required>

    <label>Mot de passe :</label>
    <input type="password" name="password" required>

    <label>
        <input type="checkbox" name="newsletter" value="1">
        S'inscrire a la newsletter
    </label>

    <button type="submit">S'inscrire</button>
</form>
php<?php
// inscription.php — traitement du formulaire
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Recuperer et nettoyer les donnees
    $nom = trim($_POST['nom'] ?? '');
    $email = filter_var($_POST['email'] ?? '', FILTER_SANITIZE_EMAIL);
    $password = $_POST['password'] ?? '';
    $newsletter = isset($_POST['newsletter']);

    // Validation
    $erreurs = [];

    if (empty($nom) || strlen($nom) < 2) {
        $erreurs[] = "Le nom doit faire au moins 2 caracteres.";
    }

    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $erreurs[] = "L'email n'est pas valide.";
    }

    if (strlen($password) < 8) {
        $erreurs[] = "Le mot de passe doit faire au moins 8 caracteres.";
    }

    if (empty($erreurs)) {
        // Hasher le mot de passe (JAMAIS stocker en clair !)
        $hashedPassword = password_hash($password, PASSWORD_DEFAULT);

        echo "Inscription reussie pour $nom ($email)";
        // Inserer en base de donnees...
    } else {
        foreach ($erreurs as $erreur) {
            echo "<p style='color:red'>$erreur</p>";
        }
    }
}
?>

GET vs POST

CritereGETPOST
DonneesDans l'URL (visible)Dans le body (invisible)
Taille max~2048 caracteres (URL)Illimitee (config serveur)
CachePeut etre cacheJamais cache
HistoriqueReste dans l'historiqueNon
UsageRecherche, filtres, paginationFormulaires, login, upload
IdempotentOui (meme resultat)Non
Securite critique : Ne faites JAMAIS confiance aux donnees utilisateur. Utilisez toujours htmlspecialchars() avant d'afficher et filter_var() pour valider. Un formulaire peut etre falsifie par n'importe qui, meme si vous avez une validation JavaScript cote client.