Objectif : comprendre en profondeur la différence entre GET vs POST en PHP, savoir quand utiliser chaque méthode HTTP selon le contexte (SEO, sécurité, logique métier, API) et éviter les erreurs d’architecture fréquentes.
Choisir entre GET et POST en PHP ne se limite pas à une question de visibilité des paramètres dans l’URL. Le choix impacte le référencement naturel, la mise en cache navigateur, l’idempotence, la sécurité applicative, la performance serveur et même la clarté de votre architecture. Dans ce guide complet (mis à jour pour 2025), nous allons dépasser les explications simplistes issues des anciens manuels PHP et replacer GET et POST dans leur cadre HTTP moderne.
1) Définition des méthodes HTTP
HTTP est un protocole orienté requêtes. Chaque requête contient :
- Une méthode (GET, POST, PUT, DELETE…)
- Une URL
- Des en-têtes (headers)
- Un éventuel corps (body)
Historiquement, les manuels PHP expliquaient GET et POST principalement via les formulaires HTML. En réalité, ce sont des concepts bien plus larges : ils expriment une intention. GET signifie “je demande une ressource”. POST signifie “j’envoie des données pour traitement”.
2) Fonctionnement de GET en PHP
La méthode GET en PHP transmet les paramètres dans l’URL :
https://monsite.com/article.php?id=12&categorie=phpEn PHP, ces paramètres sont accessibles via :
<?php $id = $_GET['id'] ?? null; $categorie = $_GET['categorie'] ?? null;
Caractéristiques clés :
- Paramètres visibles dans l’URL
- URL partageable
- Indexable par Google
- Mise en cache possible
- Limite de longueur dépendante du serveur
GET est donc naturellement adapté à la lecture de contenu, aux filtres, à la pagination et aux recherches.
3) Fonctionnement de POST en PHP
La méthode POST en PHP envoie les données dans le corps de la requête HTTP (body). Elles ne sont pas visibles dans l’URL.
$email = $_POST['email'] ?? '';
$password = $_POST['password'] ?? '';
Caractéristiques principales :
- Données non affichées dans l’URL
- Non bookmarkable
- Non indexable par défaut
- Utilisé pour modifier un état
- Permet l’upload de fichiers
POST est donc conçu pour la création, la modification ou l’envoi de données sensibles.
4) Différences techniques fondamentales
| Critère | GET | POST |
|---|---|---|
| Emplacement des données | URL | Body |
| Indexation SEO | Oui | Non |
| Cache navigateur | Oui | Non par défaut |
| Idempotence | Oui | Non |
| Usage principal | Lecture | Action / modification |
Attention : ni GET ni POST ne sont “sécurisés” en soi. La sécurité dépend du HTTPS et de la validation serveur.
5) Impact SEO : GET vs POST
Du point de vue du référencement naturel, GET est indispensable. Les moteurs indexent des URLs, pas des requêtes POST.
Exemple correct :
/blog?tag=php
Exemple incorrect pour le SEO :
Formulaire POST de recherche sans URL dédiée.
Conclusion :
- Recherche → GET
- Filtres e-commerce → GET
- Pagination → GET
6) Sécurité réelle de GET et POST
Une idée reçue dit que POST est plus sécurisé que GET. C’est faux.
Sans HTTPS :
- Les données GET peuvent être interceptées
- Les données POST aussi
La vraie sécurité repose sur :
- HTTPS obligatoire
- Validation stricte côté serveur
- Protection CSRF
- Requêtes préparées pour la base de données
7) Idempotence et architecture applicative
Une requête GET doit être idempotente : l’appeler 10 fois ne doit rien modifier.
POST peut modifier l’état :
- Création d’un compte
- Ajout au panier
- Suppression d’un élément
Utiliser GET pour supprimer une ressource est une mauvaise pratique grave.
8) Cache HTTP et performance
GET peut être mis en cache par :
- Le navigateur
- Un CDN
- Un reverse proxy
POST est rarement mis en cache. Cela signifie que GET peut être plus performant pour des contenus consultatifs.
9) Cas concrets : quel choix faire ?
Recherche interne
GET (SEO + partage URL)
Login utilisateur
POST obligatoire
Formulaire de contact
POST
Pagination
GET
Upload fichier
POST obligatoire
10) Erreurs fréquentes
- Utiliser GET pour des actions sensibles
- Confondre invisibilité URL et sécurité
- Ne pas valider $_GET ou $_POST
- Oublier HTTPS
Questions fréquentes
GET est-il moins sécurisé que POST ?
Non. Les deux nécessitent HTTPS.
Pourquoi POST pour un login ?
Parce qu’il modifie l’état serveur et évite l’exposition dans l’URL.
Peut-on référencer une page en POST ?
Non. Les moteurs indexent des URLs GET.
GET peut-il modifier une base de données ?
Techniquement oui, mais c’est une mauvaise pratique.
Conclusion
Le choix entre GET vs POST en PHP doit être guidé par l’intention :
- Lecture → GET
- Modification → POST
- SEO → GET
- Données sensibles → POST + HTTPS
Comprendre cette distinction améliore la qualité architecturale, la sécurité et le référencement de vos applications PHP modernes.