retour
01/03
section 01
$_GET et $_POST : donnees de formulaires
Connectez-vous pour sauvegarder votre progression et acceder aux quiz
Se connecterLes 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
| Variable | Contenu |
|---|---|
$_GET | Parametres dans l'URL (?cle=valeur) |
$_POST | Donnees envoyees via formulaire POST |
$_REQUEST | Fusion de $_GET, $_POST et $_COOKIE |
$_SESSION | Donnees de session (cote serveur) |
$_COOKIE | Cookies (cote client) |
$_FILES | Fichiers uploades |
$_SERVER | Informations serveur et requete |
$_ENV | Variables 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
| Critere | GET | POST |
|---|---|---|
| Donnees | Dans l'URL (visible) | Dans le body (invisible) |
| Taille max | ~2048 caracteres (URL) | Illimitee (config serveur) |
| Cache | Peut etre cache | Jamais cache |
| Historique | Reste dans l'historique | Non |
| Usage | Recherche, filtres, pagination | Formulaires, login, upload |
| Idempotent | Oui (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.// voir aussi