Verifier champ de formulaire avec la table bd (mysql)

Eléphanteau du PHP | 10 Messages

18 mars 2016, 16:41

Bonjour
j'ai cherché dans les tutos ou autres exemples
comment lorsqu'un utilisateur remplit un formulaire
s'assurer qu'il rentre les bonnes infos (mail, telephone...)
merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

18 mars 2016, 18:31

Bonjour,

Il est indispensable de faire ce contrôle au niveau serveur (en PHP) avant d'insérer ces données dans la base.
Tu peux le faire avec les fonctions filter_var() ou filter_input()
en utilisant les filtres de validation ou de nettoyage : https://secure.php.net/manual/fr/filter.filters.php
http://fr.php.net/filter_var
http://fr.php.net/filter_input

En plus (et non pas à la place, c'est important), tu peux faire des validations côté client afin d'éviter à l'utilisateur d'avoir à recharger la page.
La solution la + simple est d'utiliser les fonctions dédiées en HTML5 :
https://developer.mozilla.org/fr/docs/W ... formulaire
http://www.the-art-of-web.com/html/html ... alidation/
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 10 Messages

18 mars 2016, 19:39

en fait j'avais envisagé 2 solutions
1 >> comparé les champs au fur et à mesure de la saisie (je sais pas faire)
2 >> ou dans le fichier php d'enregistrements où je transfere dans la table
par une requete du nbre de lignes et nbre d'enregistrements un test : if ($xx != null)
celle ci je pense savoir le faire
donc je voulais votre avis sur la meilleure solution tout en sachant que l'une n'empeche pas l'autre

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

19 mars 2016, 00:00

Comme je te l'ai dit :
1) de façon obligatoire controle PHP (et ça tu sais faire et je t'ai donné les liens)
2) de façon facultative controle côté client (et je t'ai donné des indications aussi)
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Eléphanteau du PHP | 36 Messages

19 mars 2016, 04:15

Bonsoir,

Je rebondis sur ce sujet car j'ai un peut les même questions!

Donc pour un champ email je fait :

Code : Tout sélectionner

filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)
Pour mes password je fais :

Code : Tout sélectionner

password_hash($_POST['password'], PASSWORD_BCRYPT);
Dans mon cas je ne demande pas de numéro de téléphone ou autre, mai dans le cas d'un textarea avec ckeditor (que j’utilise) je le passe avec specialchars que je décode a l'affichage de même pour les commentaire.

ensuite les champs input genre username ou title qui n'est pas un Email ni un password je met strip_tags je n'ai pas besoin de style dans un titre ou un pseudo ça ce fait en front.

Pour les id qui passe en GET ou POST je ne sais jamais quoi mettre alors je met :

Code : Tout sélectionner

$db->quote($_GET['id']);
Et enfin je met mon input hidden csrf (sha1+rand) a la fois en POST et en GET et je le check toujours dans tout mes formulaire envoie édite et suppression.

ces pratique vous semble t'elles suffisante ?

car je n'ai jamais trouver de filter_var_validate_pseudo :non:

Aller bonne nuit :)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

19 mars 2016, 09:38

ID :arrow: c'est des nombres donc FILTER_SANITIZE_NUMBER_INT
Pseudo :arrow: juste du texte et chiffres, tu peux utiliser FILTER_SANITIZE_STRING

Pour le filtrage des textarea qui peuvent autoriser du HTML, il faut que tu sois très prudent pour faire un filtrage strict et n'autoriser que les balises que tu spécifies. Regarde du côté des fonctions qui font ça dans les CMS, il y a même des librairies dédiées en PHP comme : http://htmlpurifier.org
Quand tout le reste a échoué, lisez le mode d'emploi...