Fichier : lesson_08_form_2_validation.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <meta http-equiv="Content-type" content="text/html; charset=UTF-8" /> <meta name="lang" content="fr" /> <link rel="stylesheet" href="../style_sheets/lesson_08_form_2_style.css" type="text/css"> </head> <body> <?php // inclusion de la classe class include("lesson_08_form_2_class.php"); // création d'un object: instanciation de la classe $objValidation = new classFormValidation(); // validation de chaque champ //nom $objValidation->isName("nom", "ne doit comprendre ni chiffres ni caractères spéciaux"); $objValidation->isEmpty("nom", "ne peut être vide"); $flag_nom = false; //prenom $objValidation->isName("prenom", "ne doit pas comprendre de chiffres ni de caractères spéciaux spéciaux"); $objValidation->isEmpty("prenom", "ne peut être vide"); $flag_prenom = false; if ($objValidation->isError()) { $errors = $objValidation->_errorList; echo "<b>L'opération n'a pas pu être effectuée, une ou plusieurs informations sont manquantes.</b> <p> Merci de fournir les informations demandées:"; echo "<ul>"; foreach ($errors as $e) { echo "<li> La valeur du champ :<b>" . $e['field']."</b> que vous avez saisi (". $e['value'].") n'est pas valide :".$e['msg']."<p>"; ($e['field'] == "nom")?$flag_nom = true : print ""; ($e['field']=="prenom")?$flag_prenom=true:print ""; } echo "</ul>"; require ("lesson_08_form_2_form.php"); formulaire($_POST['nom'],$flag_nom, $_POST['prenom'],$flag_prenom); } else { // traitement des données echo "Les données semblent valides"; } ?> Fichier : lesson_08_form_2_class.php <?php class classFormValidation { // variable de classe var $_errorList; // methode publique : constructor, RAZ liste des erreurs // NB:le constructeur porte le même nom que la classe et // s'execute à chaque instantiation de la classe // le mot-clé this est utilisé pour appeler une méthode // qui est à l'interieur de la classe function function_classFormValidation() { $this->resetErrorList(); } //**************************************** //pour voir si la valeur n'est pas vide function isEmpty($field, $msg) { if (isSet($_POST[$field])) { if (trim($_POST[$field]) <> "") { return true; } else { $this->_errorList[] = array("field" => $field, "value" => $_POST[$field], "msg" => $msg); return false; } } else { $this->_errorList[] = array("field" => $field, "value" => $_POST[$field], "msg" => $msg); return false; } } //*************************************************** //methode pour regarder si la valeur n'a pas de chiffres //ou autres symboles et renvoyer le résultat function isName($field, $msg) { //$value = $this->_getValue($field); $value = $_POST[$field] ; $pattern = "/[]1234567890<\>\&\"\#\{\(\[\|\^\@\)\="; $pattern .="\}\,\?\;\:\\\!\§\/\*\%\$\£\-\+\°]/"; if (!preg_match($pattern, $value)) { return true; } else { $this->_errorList[] = array("field" => $field, "value" => $value, "msg" => $msg); return false; } }
//*********************************************** //methode pour savoir si la valeur est une adresse email function isEmailAddress($field, $msg) { //$value = $this->_getValue($field); $value = $_POST[$field] ; $pattern = "/^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])"; $pattern .="*@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)+/"; if(preg_match($pattern, $value)) { return true; } else { $this->_errorList[] = array("field" => $field, "value" => $value, "msg" => $msg); return false; } }
//************************************************* //methode pour savoir si la valeur est une date valide function isDate($date_day,$date_month,$date_year, $msg) { //$value = $this->_getValue($field); $field = "Date"; $value = "Day:".$_POST[$date_day]." Month:". $_POST[$date_month]." Year:".$_POST[$date_year]; if(!checkdate($_POST[$date_month],$_POST[$date_day], $_POST[$date_year])) { $this->_errorList[] = array("field" => $field, "value" => $value, "msg" => $msg); return false; } else { return true; } }
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! //methode pour dire s'il y a ou non des erreurs function isError() { if (sizeof($this->_errorList) > 0) { return true; } else { return false; } } // remise à 0 de la liste des erreurs function resetErrorList() { $this->_errorList = array(); } }
?> Fichier : ../style_sheets/lesson_08_form_2_style.css
/* style pour l'entête du tableau */ table.form { font-family: Arial, Helvetica, Sans-Serif; font-size: 10pt; font-weight: Bold; color: White; border:thin solid navy; background: white; } /* style pour l'entête du tableau */ td.header { font-family: Arial, Helvetica, Sans-Serif; font-size: 10pt; font-weight: Bold; color: White; background: navy; } /*style normal : pas d'erreur de ssaisie */ TR.normal { font-family: Arial, Helvetica, Sans-Serif; font-size: 9pt; color: Black; background: #E6E6E6; } /* style a appliquer en cas d'erreur (fond rouge) */ TR.erreur { font-family: Arial, Helvetica, Sans-Serif; font-size: 9pt; color: Red; background: #FFC2C4; } /* style por la dernière ligne du tableau (bouton envoyer) */ TR.envoyer { font-family: Arial, Helvetica, Sans-Serif; font-size: 9pt; color: lime; background: navy; }