Backend PHP (BPH) Help

Les formulaires en PHP

Dans le cours précédent, nous avons vu les fondamentaux du langage PHP : les variables, les types, les structures de contrôle et l'affichage. Il y avait pas mal de similitudes avec le C que vous connaissiez déjà. Dans ce cours, nous allons une notion très spécifique au PHP : la gestion des formulaires.

Transmettre les infos d'une page à une autre

Les formulaires en PHP ont principalement un but : pouvoir envoyer des informations d'une page à une autre. En effet, pour que nos pages soient dynamiques, nous avons parfois besoin de demander des informations à l'utilisateur ou bien de guider ses choix.

Deux méthodes sont à notre disposition pour transmettre des informations :

  • les formulaires HTML

  • les URLs

Les formulaires HTML

Petit rappel de HTML

En HTML, un formulaire ressemble à ceci :

<form method="" action="" id="loginForm"> <fieldset> <label for="username">Nom d'utilisateur</label> <input type="email" id="loginUsername" name="username" /> </fieldset> <fieldset> <label for="password">Mot de passe</label> <input type="password" id="loginPassword" name="password" /> </fieldset> <fieldset> <button type="submit">Connexion</button> </fieldset> </form>

Une balise <form> avec des attributs method et action qui contient une série de <label> et d' <input> ainsi qu'un bouton de soumission du formulaire.

L'attribut method

Nous allons d'abord nous intéresser à l'attribut method du formulaire :

<form method="">

Il peut prendre deux valeurs différentes : "get" ou "post".

La différence principale entre les deux est la façon dont elles font circuler les données.

La méthode get

Lorsqu'un formulaire qui a la méthode get est soumis, il envoie les informations des champs du formulaire directement dans l'URL :

demo méthod get

Vous pouvez tester par vous-même avec le formulaire de recherche du site education.gouv.fr.

La méthode post

La méthode post, elle n'expose pas les données : vous ne les verrez pas apparaitre dans l'URL de la page :

demo méthod post

Vous pouvez tester en vous connectant sur NetYparéo.

L'attribut action

Nous allons maintenant regarder de plus près l'attribut action du formulaire HTML :

<form action="">

action comme son nom l'indique plutôt bien permet de préciser ce que va faire le formulaire et donc à quelle URL il va envoyer ses informations.

L'URL indiquée peut être le chemin d'un fichier :

<form action="contact.php">

ou

<form action="mes-formulaires/contact.php">

ou bien une URL classique :

<form action="https://example.com/form-handling">

ou relative

<form action="/nous-contacter">

Comment le PHP reçoit les informations des formulaires

Lorsque vous envoyez un formulaire vers un fichier PHP le serveur va automatiquement remplir des variables que l'on appelle des superglobales. Selon la méthode que vous avez choisie pour votre formulaire, il va soit remplir la superglobale $_GET soit remplir la superglobale $_POST.

Ces variables sont des tableaux associatifs qui contiennent tous les champs de vos formulaires.

Le serveur va utiliser l'attribut name de votre input pour créer la clé du tableau associatif et l'attribut value pour générer sa valeur.

Par exemple le formulaire suivant :

<form id="searchForm" method="get" action="search.php"> <fieldset> <label for="searchInput"> Rechercher </label> <input type="search" id="searchField" name="search" value="lycée"/> </fieldset> <fieldset> <button type="submit">Lancer la recherche</button> </fieldset> </form>

sera utilisable par le fichier search.php de la façon suivante :

<?php $search = $_GET["search"]; echo $search; // affichera lycée ?>

alors qu'un formulaire en post comme l'exemple qui suit :

<form method="post" action="login.php" id="loginForm"> <fieldset> <label for="username">Nom d'utilisateur</label> <input type="email" id="loginUsername" name="username" value="toto@test.fr"/> </fieldset> <fieldset> <label for="password">Mot de passe</label> <input type="password" id="loginPassword" name="password" value="secretPassword"/> </fieldset> <fieldset> <button type="submit">Connexion</button> </fieldset> </form>

sera utilisable par le fichier login.php de la façon suivante :

<?php $username = $_POST["username"]; $password = $_POST["password"]; echo $username; // affichera toto@test.fr echo $password; // affichera secretPassword ?>

Passer des informations directement dans l'URL

Nous avons vu plus haut qu'en utilisant un formulaire avec la méthode get, les informations étaient envoyées directement dans l'URL. Mais nous ne sommes pas obligés d'utiliser un formulaire pour ça. Toute information passée directement dans les paramètres d'URL sera disponible en PHP dans la superglobale $_GET.

Il faut simplement respecter le format des paramètres d'URL.

Le format des paramètres d'URL

Anatomie d'une URL

Prenons l'URL générée sur le Gif de démonstration de la méthode get:

education.gouv.fr/recherche?keywords=lycée

notre navigateur nous cache des choses et la vraie URL serait :

https://education.gouv.fr/recherche?keywords=lycée

Cette URL comporte plusieurs éléments :

  • https:// c'est le protocole d'accès à la page, ici le protocole HTTP sécurisé

  • education.gouv.fr c'est le nom de domaine gouv.fr et le sous-domaine education

  • recherche c'est l'adresse dans le site

  • ? indique le début de la liste des paramètres

  • keywords=lycée c'est un paramètre ou keywords est la clé et lycée la valeur

Quand on veut construite une URL avec des paramètres on respectera toujours ce format :

protocole domaine adresse ? cléParamètre1=valeurParamètre1 & cléParamètre2=valeurParamètre2 ...

ce qui pourrait donner quelque chose comme :

https://coda.school/formations?type=bachelor&specialite=admin-sys

Comment pourriez-vous modifier cette url pour chercher des informations sur la spécialité dev-web?

21 November 2025