Télécharger
Noter:

Ajouté le 12/10/2015
Visionné 2317 fois
5/5

Vérifier un formulaire en PHP

Description

Mise à jour: 31/03/2020
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".

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){
return htmlentities($texte,ENT_QUOTES,"UTF-8");//ISO ou UTF suivant ce que vous utilisez comme encodage sur votre site
}
//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'])."'");

Commentaires

Pas encore de commentaire ajouté, soyez le premier!

Ajouter un commentaire

Pseudo/Nom *
Email *
Message *
La balise [code]Votre code...[/code] peut être utilisée

Captcha * memo1memo2

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

Retour à la liste des scripts

Flag Counter