Dicton du 23 Juillet:
Nuages de la Sainte-Brigitte, par le soleil sont chassés vite.

Télécharger
Noter:

Vérifier un formulaire en PHP

Description

La vérification d'un formulaire est importante, elle permet, entres autres, 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 chiffre, 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:

Code source (PHP)

if(isset($_POST['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:

Code source (PHP)

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 numéro de 0 à 9
- {5}: 5 fois [0-9]
- $: doit se terminer par
Résumé:
Doit commencer par 1 numéro et doit se terminer par un numéro, nous aurons donc 5 numéros grâce à {5}.

Éviter les injections SQL


J'utilise simplement la fonction htmlentities() qui converti les guillemets en entités HTML, avec les paramètres ENT_QUOTES et "ISO-8859-1", pour ne pas avoir à réécrire le code à chaque fois, je le passe dans une fonction afin de sécuriser les champs d'un formulaire en php:

Code source (PHP)

function htmlent($texte){
return htmlentities($texte,ENT_QUOTES,"ISO-8859-1");//ISO ou UTF suivant ce que vous utilisez 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:
$Input1=htmlent($_POST['input1']);
//ou directement:
mysqli_query($mysqli,"INSERT INTO matable SET input1='".htmlent($_POST['input1'])."'");



Informations relatives au sujet:
- isset() PHP
- preg_match() PHP
- htmlentities() PHP

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 * 7 + = quatorze

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

Retour à la liste des scripts

Flag Counter