Semaine 2 - Jour 4 : Formulaires GET et POST en PHP

Les méthodes HTTP GET et POST

Les formulaires HTML peuvent envoyer des données au serveur via deux méthodes principales : GET et POST. Chaque méthode a ses avantages et ses cas d'usage spécifiques.

GET affiche les données dans l'URL (visible) et convient aux recherches, tandis que POST les cache dans le corps de la requête (invisible) et convient aux données sensibles ou volumineuses.

1. GET vs POST - Comparaison

Caractéristique GET POST
Visibilité Dans l'URL Dans le corps HTTP
Taille ~2000 caractères Illimitée
Sécurité Moins sécurisé Plus sécurisé
Usage Recherches, filtres Connexion, données

2. Méthode GET - Recherche

Formulaire GET : Les données sont visibles dans l'URL

<!-- formulaire.html -->
<form action="traitement.php" method="GET">
    <input type="text" name="q" placeholder="Rechercher...">
    <button type="submit">Rechercher</button>
</form>

<?php
// traitement.php
$recherche = $_GET['q'] ?? '';
echo "Recherche : " . htmlspecialchars($recherche);
?>
URL générée : traitement.php?q=php

3. Méthode POST - Inscription

Formulaire POST : Les données sont cachées et sécurisées

<!-- inscription.html -->
<form method="POST" action="inscription.php">
    <input type="email" name="email" required>
    <input type="password" name="password" required>
    <button type="submit">S'inscrire</button>
</form>

<?php
// inscription.php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $email = $_POST['email'];
    $password = $_POST['password'];
    echo "Inscription : " . htmlspecialchars($email);
}
?>
Note : Les mots de passe ne sont JAMAIS visibles dans l'URL avec POST

4. Types de champs & Upload

Checkboxes multiples :

<!-- Utiliser [] pour tableaux -->
<input type="checkbox" name="hobbies[]" value="sport"> Sport
<input type="checkbox" name="hobbies[]" value="lecture"> Lecture

<?php
$hobbies = $_POST['hobbies'] ?? [];
foreach ($hobbies as $hobby) {
    echo htmlspecialchars($hobby) . " ";
}
?>

Upload de fichiers :

<form method="POST" enctype="multipart/form-data">
    <input type="file" name="fichier">
    <button type="submit">Uploader</button>
</form>

<?php
$fichier = $_FILES['fichier'];
if ($fichier['error'] === UPLOAD_ERR_OK) {
    $dest = "uploads/" . basename($fichier['name']);
    move_uploaded_file($fichier['tmp_name'], $dest);
}
?>
Important : Toujours valider le type et la taille des fichiers uploadés
Froggiesplaining :


Objectifs de ce cours :
✅ Comprendre les différences entre GET et POST
✅ Savoir quand utiliser chaque méthode
✅ Récupérer les données avec $_GET et $_POST
✅ Gérer les formulaires avec différents types de champs
✅ Uploader des fichiers avec $_FILES

Points clés à retenir :
• GET = Données visibles dans l'URL (recherches, filtres, pagination)
• POST = Données cachées (connexion, inscription, envoi de données)
• Toujours utiliser htmlspecialchars() pour afficher les données
• Ne jamais faire confiance aux données utilisateur
• Les checkboxes multiples nécessitent [] dans le name
• Upload de fichiers = method POST + enctype multipart/form-data

Règle d'or :
GET pour LIRE des données (lecture seule), POST pour MODIFIER des données (création, mise à jour, suppression). Comme moi : je regarde les mouches avec mes yeux (GET), mais je les attrape avec ma langue (POST) !

Exercice pratique :
1. Créez un formulaire de recherche avec GET
2. Créez un formulaire d'inscription avec POST (email, password)
3. Affichez les résultats avec htmlspecialchars()
4. Créez un formulaire avec checkboxes multiples (hobbies[])
5. Créez un formulaire d'upload de fichiers
6. Vérifiez toujours $_SERVER['REQUEST_METHOD']

Froggie explain

GitHub - eCrea