Php5 - classe de vérification de formulaire simple

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 332 fois - Téléchargée 17 fois

Contenu du snippet

Voilà une ptite classe qui vous permet de tester les valeurs d'un formulaire.

Elle est simple et le restera =o cela me suffit mais j'dis pas non pour des ptits plus =)

Source / Exemple :


<?php
class Errors
{
	private $values = array();
	private $form = '';
	private $list_errors = array();
	private $exist = false;
	private $nb_errors = 0;
	
	/**

  • Constructeur de la class, spécifie les valeurs du formulaire
*
  • @param array $values
  • @param string $form
  • /
public function __construct($values, $form) { $this->values = $values; $this->form = $form; } /**
  • Ajout l'erreur a $this->list_error
*
  • @param string $error
  • @param mixed $values
  • @param string $type
  • /
public function add($error, $values, $type) { if (is_array($values)) { $value_bis = array(); foreach ($values as $value) { $value_bis[] = $this->values[$value]; } $values = $value_bis; } else { if (isset($this->values[$values])) { $values = $this->values[$values]; } } if (!Checking::$type($values)) { $this->list_errors[] = $error; $this->exist = true; $this->nb_errors++; } } /**
  • Génère l'affichage des erreurs, assigne les valeurs au formulaire et vérifie qu'il est bien valide
*
  • @return bool
  • /
public function valid() { if ($this->exist) { $_SESSION[$this->form]['form_errors'] = $this->list_errors; $_SESSION[$this->form]['form_values'] = $this->values; return false; } return true; } public function __get($name) { if (property_exists($this, $name)) { return $this->$name; } } } class Checking { /**
  • Vérifie si une valeur est vide / existe
*
  • @param mixed $values
  • @return bool
  • /
public static function notEmpty($values) { // Si $values n'est pas un array if (!is_array($values)) { $value = trim($values); if (!empty($value) && isset($value)) { return true; } return false; } foreach ($values as $value) { $value = trim($value); if (empty($value) || !isset($values)) { return false; } } return true; } /**
  • Vérifie si une valeur est égale à une autre
  • @param array $values
  • @return bool
  • /
public static function isEqual($values) { if ($values[0] !== $values[1]) { return false; } return true; } /**
  • Vérifie si une valeur est égale à zéro
  • @param string $value
  • @return bool
  • /
public static function notZero($value) { if ($value === 0) { return false; } return true; } /**
  • Vérifie que le mail est valide
  • @param string $mail
  • @return bool
  • /
public static function isValidMail($mail) { if (!filter_var($mail, FILTER_VALIDATE_EMAIL)) { return false; } return true; } /**
  • Vérifie que ce soit bien un entier
  • @param int $int
  • @return bool
  • /
public static function isInt($int) { if (!filter_var($int, FILTER_VALIDATE_INT)) { return false; } return true; } /**
  • Vérifie que l'image envoyé est bien un "jpg"
  • @params $index string
  • @return bool
  • /
public static function isJpg($index) { if (empty($_FILES[$index]['name'])) { return true; } $path_parts = pathinfo($_FILES[$index]['name']); if ($path_parts['extension'] != 'jpg') { return false; } return true; } } ?> Exemple : <?php $_SESSION['test']['form_values'] = array(); $_SESSION['test']['form_errors'] = array(); if (isset($_POST['input_submit'])) { $errors = new Errors($_POST, 'test'); $errors->add('Le champ ne doit pas être vide.', 'input1', 'notEmpty'); $errors->add('Le champ ne doit pas être égale à zéro.', 'input2', 'notZero'); $errors->add('Les valeurs doivent être identique.', array('input3', 'input4'), 'isEqual'); // Si le forumaire est valide if ($errors->valid()) { echo 'Le formulaire est valide<br />'; } } if (!empty($_SESSION['test']['form_errors'])) { $errors_values = $_SESSION['test']['form_errors']; foreach ($errors_values as $value) { echo $value . '<br />'; } } ?> <form action=""> <p> Input 1 : <input type="text" name="input1" value="<?php echo $_SESSION['test']['form_values']['input1']; ?>" /><br /> Input 2 : <input type="text" name="input2" value="<?php echo $_SESSION['test']['form_values']['input2']; ?>" /><br /> Input 3 : <input type="text" name="input3" value="<?php echo $_SESSION['test']['form_values']['input3']; ?>" /><br /> Input 4 : <input type="text" name="input4" value="<?php echo $_SESSION['test']['form_values']['input4']; ?>" /><br /> <input type="submit" name="input_submit" value="Envoyer" /> </p> </form>

A voir également

Ajouter un commentaire

Commentaires

Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
21
Hello,

c'est plus grave que ça ce laxisme dans les comparaisons.
empty() va vérifier qu'une valeur est vide, ou nulle, ou false...
'' aussi...
ce qui implique que 0 rentre dans ces deux cas.
Et quand après on a aussi ça :
# public static function notZero($value)
# {
# if ($value == 0) {
# return false;
# }
#
# return true;
# }

Ca devient très embêtant, car ce code ne vérifie absolument pas si la valeur est égale à 0. Si elle est false, ou '', c'est pareil.

Quand on fait un code de traitement de données, on DOIT coder de manière stricte! Tes comparaisons doivent être strictes, et tu ne peux pas te permettre de ne pas connaître les différences entre empty(), isset(), is_null(), is_int(), ==, ===, !=, !== etc.
Sinon, ton code va forcément être buggé.
Et en l'occurence, il l'est.

Sinon, bien aussi pour les filtres en effet :-) Mais tu devrais approfondir, tu t'en sers peu là...et ils peivent justement t'éviter bien des déboires.
Messages postés
1127
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
en fait ta double vérification ne fait que te perdre du temps de calcul et des lignes de code en plus :)
Messages postés
12
Date d'inscription
mardi 4 octobre 2005
Statut
Membre
Dernière intervention
26 septembre 2007

Hey merci pour pathinfo je connaisais pas =o.
Et pour les != '' je fais juste un double test : avec != et avec !empty... juste au cas où =P.
Bon après pour les fonctions de check, j'ai juste fais des trucs simples chacun peut faire sa ptite fonction.

Messages postés
488
Date d'inscription
samedi 5 avril 2003
Statut
Membre
Dernière intervention
31 mars 2009
4
De bonnes idées, notamment l'implémentation de l'extension Filter de PHP5. Par contre j'ai quelques remarques à te faire pour améliorer tout ça :

1/ Remplacer tes != '' par !empty($maVar)
2/ Une extension doit plutôt se récupérer à partir de la fonction pathinfo() et de sa constante PATHINFO_EXTENSION.

++

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.