Comment récupérer les données d'un formulaire en PHP ?
Comment faire pour récupérer les données INPUT d'un formulaire en PHP ?
<form action="test.php" method="post">
Nom: <input type="text" name="nom">
Prénom: <input type="text" name="prenom">
<input type="submit">
</form>
Les données d'un formulaire PHP peuvent être envoyées de deux manières, avec la méthode POST ou la méthode GET. De plus on doit spécifier l'adresse de la page vers laquelle les données seront envoyées.
Pour des raisons de sécurité, il n'est pas recommandé d'écrire directement l'adresse de la page, mais plutôt de spécifier une variable de serveur PHP, tout en la sécurisant avec htmlspecialchars().
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
Dans votre exemple vous utilisez la méthode POST.
method="post"
Vous pourriez aussi utiliser la méthode GET.
method="get"
D'une manière générale, privilégiez la méthode POST, elle prend en charge d'avantage d'entrées, elle n'est pas limitée (GET limite à 2000 caractères), et elle n'affiche pas les variables du formulaire dans la barre d'adresse du navigateur.
Vous devez également sécuriser les données transmises par le formulaire. Pour cela voici une fonction qui effectue le job :
<?php
function secure_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
Cette fonction utilise trim, stripslashes et htmlspecialchars pour sécuriser les données transmises par le formulaire PHP. C'est à priori suffisant, mais vous pourriez allez encore plus loin, surtout si vous connaissez la nature des informations transmises par le formulaire. Ainsi référez vous à ces autres fonction PHP pour sécuriser d'avantages les données du formulaire :
Astuce : Comment vérifier le format d'une adresse mail en PHP.
Ceci étant, voici comment récupérer les données INPUT d'un formulaire PHP, avec la méthode POST :
<?php
// On défini les variables
$nom = $prenom = "";
// On ajoute la fonction pour sécuriser
function secure_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
// On vérifie que la méthode est POST
// On récupère les valeurs transmises par le formulaire
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$nom = secure_input($_POST["nom"]);
$prenom = secure_input($_POST["prenom"]);
}
?>
Si vous préférez utiliser la méthode GET à la méthode POST pour récupérer les données d'un formulaire PHP, remplacez POST
par GET
, et $_POST["nom"]
et $_POST["prenom"]
par $_GET["nom"]
et $_GET["prenom"]
.