Télécharger
Noter:

Ajouté le 2021-12-03
Visionné 4514 fois
5/5 (2)

Vérifier un formulaire en PHP

Description

La vérification d'un formulaire est importante, elle permet d'éviter les injections SQL si vous rentrez les données dans une table ou à vérifier si ils correspondent à vos critères (Que ce soit bien un nombre, du texte ou tout autre format grâce à preg_match() notamment, ce que j'utilise le plus).

Tout d'abord, avant de vérifier si le contenu est bien ce que vous voulez, il faut vérifier si le champs est bien prix en compte par PHP, comme ceci:
if(isset($_POST['name_de_linput_html'])) {//dans l'HTML: <input name="name_de_linput_html"...>
echo "Le champ est pris en compte!";
} else {
echo "name_de_linput_html est inconnu!";
}

On utilise isset() de PHP pour savoir si une variable est définie.

Ensuite, prenons l'exemple d'un code postal, nous allons l'appeler code_postal pour le nom de l'input et on va donc vérifier si:

- C'est un nombre
- Et si c'est il contient une suite de 5 chiffres

Pour ce faire, on utilise preg_match(), comme ceci:
if(preg_match("#^[0-9]{5}$#",$_POST['code_postal'])) {
echo "Le champ code postal est correct!";
} else {
echo "Le champ code postal n'est pas au bon format!";
}


Explications:
Dans l'expression régulière, nous avons:
#^[0-9]{5}$#

Ce qui veut dire:
- ^: doit commencer par
- [0-9]: un chiffre de 0 à 9
- {5}: 5 fois un chiffre
- $: doit se terminer par
Résumé:
Doit commencer par 1 chiffre et doit se terminer par un chiffre, nous aurons donc 5 chiffres grâce à {5}.

Éviter les injections SQL


J'utilise simplement la fonction htmlentities() qui converti les guillemets (simples et doubles)en entités HTML, avec les paramètres ENT_QUOTES et "UTF-8". J'utilise aussi preg_match() couplé à htmlentities() pour vérifier le bon format des saisies du formulaire. Utilisez mysqli_real_escape_string() si vous voulez être sûr des données que vous insérez dans la base de données.

Pour ne pas avoir à réécrire le code à chaque fois, je le passe dans une fonction afin de sécuriser le champ voulu et le paramètre d'une URL ($_GET ou $_POST):
function htmlent($texte){
//ISO ou UTF suivant ce que vous utilisez comme encodage sur votre site
return htmlentities($texte,ENT_QUOTES,"UTF-8");
}


//on pourra ainsi l'utiliser comme suit et retourner un champ sécurisé pour l'insérer dans la base de données:
$input=htmlent($_POST['name_input']);
mysqli_query($mysqli,"INSERT INTO table SET colonne='$input'");


//ou directement
mysqli_query($mysqli,"INSERT INTO table SET colonne='".htmlent($_POST['name_input'])."'");



Besoin de travaux pour votre site ?

Je suis disponible, contactez-moi !

Commentaires

Ajouter un commentaire

Commenter
Pseudo/Nom *
Email *
Message *
Captcha *
memo1memo2
Commenter

Les champs marqués d'un * sont obligatoires.

Pas encore de commentaire, soyez le premier !

Retour à la liste des scripts