Aller au contenu principal

Les formulaires

Notions théoriques

Les formulaires sont un moyen essentiel de recueillir des informations auprès des utilisateurs sur le Web.

En PHP, nous avons deux méthodes principales pour envoyer des données de formulaire : GET et POST.

  • La méthode GET envoie les données du formulaire dans l'URL de la page. C'est utile pour les données non sensibles, comme une recherche dans un moteur de recherche. Cependant, elle a des limites en termes de longueur des données.

  • La méthode POST envoie les données du formulaire dans le corps de la requête HTTP. Elle n'a pas de limites en termes de longueur des données et peut être utilisée pour envoyer des données sensibles, comme des mots de passe.

Les variables superglobales

Les variables superglobales en PHP sont des variables intégrées qui sont toujours disponibles dans toutes les portées de script.

Cela signifie que ces variables peuvent être accessibles de n'importe où dans le script, que ce soit à l'intérieur d'une fonction, d'une classe ou à l'extérieur de toute fonction ou classe.

Voici une liste des variables superglobales en PHP :

  1. $_SERVER: Cette variable superglobale contient des informations sur les en-têtes, les chemins et les emplacements du script. Par exemple, $_SERVER['HTTP_USER_AGENT'] contiendrait des informations sur le navigateur de l'utilisateur.

  2. $_GET: Cette variable est utilisée pour collecter des données envoyées via la méthode GET HTTP. Les données sont visibles dans l'URL du navigateur.

  3. $_POST: Semblable à $_GET, cette variable est utilisée pour collecter des données envoyées via la méthode POST HTTP. Contrairement à $_GET, les données ne sont pas visibles dans l'URL du navigateur.

  4. $_FILES: Cette variable superglobale est utilisée pour gérer le téléchargement de fichiers.

  5. $_COOKIE: Cette variable est utilisée pour accéder aux cookies de l'utilisateur.

  6. $_SESSION: Cette variable est utilisée pour stocker des informations sur la session de l'utilisateur. Elle est souvent utilisée pour passer des informations d'une page à une autre.

  7. $_REQUEST: Cette variable superglobale contient les valeurs de $_GET, $_POST et $_COOKIE.

  8. $_ENV: Cette variable contient des informations sur l'environnement dans lequel le script est exécuté.

  9. $_GLOBALS: Cette variable référence toutes les variables disponibles dans la portée globale.

Il est important de noter que comme ces variables sont toujours disponibles, elles peuvent potentiellement introduire des problèmes de sécurité si elles ne sont pas utilisées correctement.

Par exemple, elles peuvent être utilisées pour injecter des données malveillantes dans votre script. Il est donc crucial de toujours valider et/ou nettoyer les données que vous obtenez à partir de ces variables superglobales.

Récapitulatif des variables superglobales en PHP

Exemple pratique

Créons un formulaire avec la méthode GET et un formulaire avec la méthode POST.

  • Dans votre répertoire "Documents" créez le répertoire tp_formulaires.

  • Dans ce répertoire créez le fichier index.php :

    <?php
    // Formulaires
    print("<h1>Formulaires</h1>");
  • Démarrez le serveur Web intégré à PHP :

    php -S localhost:8000
  • Testez le fonctionnement de ce fichier, dans votre navigateur, à l'adresse :

    http://localhost:8000
  • Ajoutez le code HTML suivant :

<!-- Formulaire utilisant la méthode GET -->
<form method="GET" action="index.php">
<label for="search">Recherche :</label>
<input type="text" name="search">
<input type="submit" value="Rechercher">
</form>

<!-- Formulaire utilisant la méthode POST -->
<form method="POST" action="index.php">
<label for="password">Mot de passe :</label>
<input type="password" name="password">
<input type="submit" value="Envoyer">
</form>

Dans index.php, nous pouvons récupérer les données du formulaire :

  • avec $_GET['search'] pour le premier formulaire
  • et $_POST['password'] pour le second.

Voici comment vous pouvez récupérer les données des 2 formulaires dans le fichier index.php :

if ($_SERVER['REQUEST_METHOD'] === 'GET') {
// Récupération des données du formulaire GET
if (isset($_GET['search'])) {
$searchTerm = $_GET['search'];
print("Vous avez recherché : " . $searchTerm);
}
} elseif ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Récupération des données du formulaire POST
if (isset($_POST['password'])) {
$password = $_POST['password'];
// Ici, vous pouvez traiter le mot de passe (par exemple, le vérifier)
// Pour des raisons de sécurité, nous ne l'affichons pas
print("Le mot de passe a été reçu.");
}
} else {
print("Aucune donnée de formulaire reçue.");
}
?>

Dans ce code, nous vérifions d'abord la méthode de la requête HTTP avec $_SERVER['REQUEST_METHOD'].

  • Si la méthode est GET, nous récupérons les données du formulaire GET avec $_GET['search'].
  • Si la méthode est POST, nous récupérons les données du formulaire POST avec $_POST['password'].
info

Notez que pour des raisons de sécurité, nous ne devrions jamais afficher ou enregistrer des mots de passe en clair. Dans un véritable scénario, vous devriez hasher le mot de passe et le comparer à une version hashée stockée de manière sécurisée.

Test de mémorisation/compréhension


Quelle méthode de formulaire envoie les données dans l'URL de la page ?


Quelle méthode de formulaire est recommandée pour envoyer des données sensibles ?


Quelle variable superglobale PHP permet de récupérer les données d'un formulaire envoyé par la méthode POST ?


Quelle est la limite de la méthode GET ?


Quelle balise HTML est utilisée pour créer un formulaire ?



TP pour réfléchir et résoudre des problèmes

Dans ce TP, nous allons créer un formulaire de connexion.

  • Dans votre répertoire "Documents" créez le répertoire tp_formulaires.

  • Dans votre répertoire formulaires créez le fichier index.html avec le titre <h1>Formulaire de connexion</h1>.

  • Démarrez le serveur Web intégré à PHP :

    php -S localhost:8000
  • Testez le fonctionnement de ce fichier, dans votre navigateur, à l'adresse :

    http://localhost:8000
  • Dans ce fichier index.html, créez un formulaire avec les champs "nom d'utilisateur" et "mot de passe".

    Le formulaire doit utiliser la méthode POST.

  • Dans votre répertoire formulaires créez le fichier traitement.php.

  • Dans ce fichier traitement.php, vérifiez si le nom d'utilisateur est "admin" et le mot de passe est "secret".

    • Si c'est le cas, affichez un message de bienvenue : "Bienvenue, admin !".
    • Sinon, affichez le message d'erreur : "Nom d'utilisateur ou mot de passe incorrect.".
astuce

N'oubliez pas, la pratique est la clé pour maîtriser une nouvelle compétence. Donc, si vous n'avez pas réussi du premier coup, ne vous découragez pas et essayez à nouveau.

Une solution