begin process at 2012 05 27 22:14:47
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Class et Objet ( POO )

 > CLASSE POUR GÉRER LES FORMULAIRES HTML

CLASSE POUR GÉRER LES FORMULAIRES HTML


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Class et Objet ( POO ) Niveau :Débutant Date de création :14/10/2004 Vu :5 078

Auteur : phanatic

Ecrire un message privé
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

Vous devez disposez de php5, le reste va de suite...

Source

  • ################## CPhanaticFormHTML.class.php ##################
  • <?php
  • /**
  • * class représentant un formulaire HTML
  • */
  • abstract class CPhanaticFormHTML {
  • /** @var array liste des champs enregistrés*/
  • private $registerInputs=array();
  • /** @var array liste des methodes de validation */
  • private $inputValidationMethods=array();
  • /** @var array liste des messages d'erreur */
  • private $inputErrorMessages=array();
  • /** @var string nom du formulaire */
  • private $formName;
  • /** @var boolean comportement sur la validation */
  • private $cleanOnValidat;
  • /**
  • * @param string $formName identifiant du formulaire ( unique pour une session )
  • * @param boolean $cleanOnValidat deternime si l'etat du formulaire doit être sauvegardé aprés sa validation
  • */
  • function __construct($formName="_DEFAULT", $cleanOnValidat=TRUE){
  • $this->formName = $formName;
  • $this->cleanOnValidat = $cleanOnValidat;
  • if(empty($_SESSION[$this->formName])){
  • $this->initialize();
  • $_SESSION[$this->formName] = "ready";
  • }
  • }
  • /**
  • * enregistrement d'un champ de formulaire
  • * @param string $inputName nom du champ ( nom HTML )
  • * @param string $validationMethodeName methode qui sera appelée pour valider le champ : public boolean methodName(string $value)
  • * @param string $errorMessage message renvoyé en cas d'erreur sur le champ
  • */
  • protected function resigsterInput($inputName,$validationMethodeName, $errorMessage){
  • if(!in_array($inputName, $this->registerInputs)){
  • $this->inputValidationMethods[$inputName] = $validationMethodeName;
  • $this->inputErrorMessages[$inputName] = $errorMessage;
  • }
  • }
  • /**
  • * netoyage de la session
  • */
  • public function clean(){
  • foreach($this->registerInputs as $input){
  • $validValueInputName = $this->formName . "_" . $inputName . "_VALUE";
  • $validMessageInputName = $this->formName . "_" . $inputName . "_MSG";
  • if(!empty($_SESSION[$validValueInputName])){
  • unset($_SESSION[$validValueInputName]);
  • }
  • if(!empty($_SESSION[$validMessageInputName])){
  • unset($_SESSION[$validMessageInputName]);
  • }
  • }
  • }
  • /**
  • * teste s'il le formulaire a été posté
  • * @return boolean - true si oui
  • * - false dans tous les autres cas
  • */
  • public function isPosted(){
  • return !empty($_POST[$this->formName]);
  • }
  • /**
  • * obtenir la valeur d'un champ
  • * @param string $inputName nom du champ ( nom HTML )
  • * @return string
  • */
  • public function getInputValue($inputName){
  • $validInputName = $this->formName . "_" . $inputName . "_VALUE";
  • if(array_key_exists($validInputName,$_SESSION)){
  • $_SESSION[$validInputName] = "";
  • }
  • return $_SESSION[$validInputName];
  • }
  • /**
  • * définir la valeur d'un champ
  • * @param string $inputName nom du champ ( nom HTML )
  • * @param string $inputValue valeur du champ
  • */
  • public function setInputValue($inputName, $inputValue){
  • $validInputName = $this->formName . "_" . $inputName . "_VALUE";
  • $_SESSION[$validInputName] = $inputValue;
  • }
  • /**
  • * obtenir le message d'un champ
  • * @param string $inputName nom du champ ( nom HTML )
  • * @return string
  • */
  • public function getInputMessage($inputName){
  • $validInputName = $this->formName . "_" . $inputName . "_MSG";
  • if(array_key_exists($validInputName,$_SESSION)){
  • $_SESSION[$validInputName] = "";
  • }
  • return $_SESSION[$validInputName];
  • }
  • /**
  • * définir le message d'un champ
  • * @param string $inputName nom du champ ( nom HTML )
  • * @param string $inputMessage message du champ
  • */
  • public function setInputMessage($inputName, $inputMessage){
  • $validInputName = $this->formName . "_" . $inputName . "_MSG";
  • $_SESSION[$validInputName] = $inputValue;
  • }
  • /**
  • * teste s'il le formulaire est valide
  • * @return boolean - TRUE si oui
  • * - FALSE dans tous les autres cas
  • */
  • public function isValidate(){
  • $result = TRUE;
  • // vider la pile des anciens messages
  • unset($this->messages);
  • $this->messages = array();
  • //interogation de la classe d'implémentation
  • $cls = new ReflectionClass(get_class($this));
  • $validatMethod = null;
  • // effecter le travail pour tous les champs enregistrés
  • foreach($this->registerInputs as $input){
  • if(!array_key_exists($input, $_POST)){
  • $this->messages[$input] = "Ce champ n'existe pas dans le formulaire !";
  • $result = FALSE;
  • break;
  • }
  • $validatMethod = $cls->getMethod($this->inputValidationMethods[$inputName]);
  • // teste de la valeur
  • if(!$validatMethod->invoke($this,$_POST[$inputName])){
  • $this->messages[$input] = $this->inputErrorMessages[$inputName];
  • $result = FALSE;
  • break;
  • }
  • }
  • //notification de l'évennement de validation
  • if($result){
  • $this->onValidate();
  • if($this->cleanOnValidat){
  • $this->clean();
  • }
  • } else {
  • $this->onInvalidate();
  • }
  • return $result;
  • }
  • /**
  • * appeler l'or de la premiere instentiation
  • */
  • protected function initialize(){
  • }
  • /**
  • * appeler en cas de non validation ( ne pas faire de redirection )
  • */
  • protected function onInvalidate(){
  • }
  • /**
  • * appeler en cas de validation ( ne pas faire de redirection )
  • */
  • protected function onValidate(){
  • }
  • /* validations prédéfinies */
  • public static function isNotEmty($string){
  • return !empty($string);
  • }
  • public static function isUSZipCode($string){
  • return preg_match("/^[2-9][0-9]{4}([-]{1}[0-9]{4})?$/",$string));
  • }
  • public static function isUSPhoneNumber($phonenumber){
  • return preg_match("/^[0-9]{3,3}[-]{1,1}[0-9]{3,3}[-]{1,1}
  • [0-9]{4,4}$/", $phonenumber);
  • }
  • public static function isIPAddress($ip_addr){
  • $num="(1?\d\d|2[0-4]\d|25[0-5]|[0-9])";
  • return preg_match("/$num\.$num\.$num\.$num/",$ip_addr);
  • }
  • public static function isEmail($email){
  • // j'ai la flème ....
  • return !empty($email);
  • }
  • }
  • ?>
  • ################## CMyFormHTML.class.php ##################
  • <?php
  • include_once ("CPhanaticFormHTML.class.php");
  • class CMyFormHTML extends CPhanaticFormHTML {
  • function __construct(){
  • parent::__construct("_MYFORMHTML");
  • $this->resigsterInput("_NAME","isValidateName", "");
  • $this->resigsterInput("_EMAIL","isValidateEmail", "");
  • $this->resigsterInput("_PHONE","isValidatePhone", "");
  • }
  • protected function initialize(){
  • $this->setInputValue("_NAME","Alce");
  • }
  • protected function onInvalidate(){
  • }
  • protected function onValidate(){
  • }
  • public static function isValidateName($value){
  • return self::isNotEmpty($value);
  • }
  • public static function isValidateEmail($value){
  • if(!self::isNotEmpty($value)) return FALSE;
  • if(!self::isEmail($value)) return FALSE;
  • return TRUE;
  • }
  • public static function isValidatePhone($value){
  • if(!self::isNotEmpty($value)) return FALSE;
  • if(!self::isUSPhoneNumber($value)) return FALSE;
  • return TRUE;
  • }
  • }
  • ?>
  • ################## index.php ##################
  • <?php
  • include_once ("CMyFormHTML.class.php");
  • $myForm = new CMyFormHTML();
  • if($myForm->isPosted()){
  • if($myForm->isValidate()){
  • // ...
  • } else {
  • // ...
  • }
  • }
  • ?>
  • <html>
  • <head>
  • <title>Sample: CPhanaticFormHTML</title>
  • </head>
  • <body>
  • <form name="_MYFORMHTML" method="post">
  • <!-- ne pas oublier de déclarer un champ chaché du même nom que le formulaire -->
  • <input type="hidden" name="_MYFORMHTML" value="OK">
  • <p>name&nbsp;:&nbsp;
  • <input name="_NAME" value=\"<?php=$myForm->getInputValue("_NAME")?>\">
  • <font color="red"><?php=$myForm->getInputMessage("_NAME")?></font>
  • </p>
  • <p>email&nbsp;:&nbsp;
  • <input name="_EMAIL" value=\"<?php=$myForm->getInputValue("_EMAIL")?>\">
  • <font color="red"><?php=$myForm->getInputMessage("_EMAIL")?></font>
  • </p>
  • <p>phone&nbsp;:&nbsp;
  • <input name="_PHONE" value=\"<?php=$myForm->getInputValue("_PHONE")?>\">
  • <font color="red"><?php=$myForm->getInputMessage("_PHONE")?></font>
  • </p>
  • <p>
  • <input type=submit value=Submit name=B1>
  • </p>
  • </form>
  • </body>
  • </html>
################## CPhanaticFormHTML.class.php ##################
<?php
/**
* class représentant un formulaire HTML
*/
abstract class CPhanaticFormHTML {
  /** @var array liste des champs enregistrés*/
  private $registerInputs=array();
  /** @var array liste des methodes de validation */
  private $inputValidationMethods=array();
  /** @var array liste des messages d'erreur */
  private $inputErrorMessages=array();
  /** @var string nom du formulaire */
  private $formName;  
  /** @var boolean comportement sur la validation */
  private $cleanOnValidat;
  /**
  * @param string $formName identifiant du formulaire ( unique pour une session )
  * @param boolean $cleanOnValidat deternime si l'etat du formulaire doit être sauvegardé aprés sa validation
  */  
  function __construct($formName="_DEFAULT", $cleanOnValidat=TRUE){
    $this->formName = $formName;
    $this->cleanOnValidat = $cleanOnValidat;
    if(empty($_SESSION[$this->formName])){
      $this->initialize();
      $_SESSION[$this->formName] = "ready";
    }
  }
  /**
  * enregistrement d'un champ de formulaire
  * @param string $inputName nom du champ ( nom HTML )
  * @param string $validationMethodeName methode qui sera appelée pour valider le champ : public boolean methodName(string $value)
  * @param string $errorMessage message renvoyé en cas d'erreur sur le champ
  */
  protected function resigsterInput($inputName,$validationMethodeName, $errorMessage){
    if(!in_array($inputName, $this->registerInputs)){
      $this->inputValidationMethods[$inputName] = $validationMethodeName;
      $this->inputErrorMessages[$inputName] = $errorMessage;
    }
  }
  /**
  * netoyage de la session 
  */
  public function clean(){
    foreach($this->registerInputs as $input){    
      $validValueInputName = $this->formName . "_" . $inputName . "_VALUE";
      $validMessageInputName = $this->formName . "_" . $inputName . "_MSG";
      if(!empty($_SESSION[$validValueInputName])){
        unset($_SESSION[$validValueInputName]);
      }
      if(!empty($_SESSION[$validMessageInputName])){
        unset($_SESSION[$validMessageInputName]);
      }
    }
  }
  /**
  * teste s'il le formulaire a été posté
  * @return boolean - true si oui
  *                 - false dans tous les autres cas
  */
  public function isPosted(){
    return !empty($_POST[$this->formName]);
  }
  /**
  * obtenir la valeur d'un champ
  * @param string $inputName nom du champ ( nom HTML )
  * @return string 
  */    
  public function getInputValue($inputName){
    $validInputName = $this->formName . "_" . $inputName . "_VALUE";
    if(array_key_exists($validInputName,$_SESSION)){
      $_SESSION[$validInputName] = "";
    }
    return $_SESSION[$validInputName];
  }
  /**
  * définir la valeur d'un champ
  * @param string $inputName nom du champ ( nom HTML )
  * @param string $inputValue valeur du champ
  */    
  public function setInputValue($inputName, $inputValue){
    $validInputName = $this->formName . "_" . $inputName . "_VALUE";
    $_SESSION[$validInputName] = $inputValue;
  }
  /**
  * obtenir le message d'un champ
  * @param string $inputName nom du champ ( nom HTML )
  * @return string 
  */        
  public function getInputMessage($inputName){
    $validInputName = $this->formName . "_" . $inputName . "_MSG";
    if(array_key_exists($validInputName,$_SESSION)){
      $_SESSION[$validInputName] = "";
    }
    return $_SESSION[$validInputName];
  }
  /**
  * définir le message d'un champ
  * @param string $inputName nom du champ ( nom HTML )
  * @param string $inputMessage message du champ
  */    
  public function setInputMessage($inputName, $inputMessage){
    $validInputName = $this->formName . "_" . $inputName . "_MSG";
    $_SESSION[$validInputName] = $inputValue;
  }
  /**
  * teste s'il le formulaire est valide
  * @return boolean - TRUE si oui
  *                 - FALSE dans tous les autres cas
  */ 
  public function isValidate(){
    $result = TRUE;
    // vider la pile des anciens messages
    unset($this->messages);
    $this->messages = array();
    
    //interogation de la classe d'implémentation
    $cls = new ReflectionClass(get_class($this));
    $validatMethod = null;
    
    // effecter le travail pour tous les champs enregistrés
    foreach($this->registerInputs as $input){    
      if(!array_key_exists($input, $_POST)){
        $this->messages[$input] = "Ce champ n'existe pas dans le formulaire !";
        $result = FALSE;
        break;
      } 
      $validatMethod = $cls->getMethod($this->inputValidationMethods[$inputName]);
      // teste de la valeur
      if(!$validatMethod->invoke($this,$_POST[$inputName])){
        $this->messages[$input] = $this->inputErrorMessages[$inputName];
        $result = FALSE;
        break;
      }      
    }
    //notification de l'évennement de validation
    if($result){
      $this->onValidate();
      if($this->cleanOnValidat){
        $this->clean();
      }
    } else {
      $this->onInvalidate();
    }
    return $result;  
  }
  /**
  * appeler l'or de la premiere instentiation
  */ 
  protected function initialize(){
  }
  /**
  * appeler en cas de non validation ( ne pas faire de redirection )
  */ 
  protected function onInvalidate(){
  }
  /**
  * appeler en cas de validation ( ne pas faire de redirection )
  */ 
  protected function onValidate(){
  }
  
  /* validations prédéfinies */
  public static function isNotEmty($string){
    return !empty($string);
  }
  public static function isUSZipCode($string){
    return preg_match("/^[2-9][0-9]{4}([-]{1}[0-9]{4})?$/",$string));
  }
  public static function isUSPhoneNumber($phonenumber){
    return preg_match("/^[0-9]{3,3}[-]{1,1}[0-9]{3,3}[-]{1,1}
       [0-9]{4,4}$/", $phonenumber);
  }
  public static function isIPAddress($ip_addr){
    $num="(1?\d\d|2[0-4]\d|25[0-5]|[0-9])";
    return preg_match("/$num\.$num\.$num\.$num/",$ip_addr);
  }
  public static function isEmail($email){
    // j'ai la flème ....
    return !empty($email);
  }
}
?>

################## CMyFormHTML.class.php ##################
<?php
include_once ("CPhanaticFormHTML.class.php");
class CMyFormHTML extends CPhanaticFormHTML {
  function __construct(){
    parent::__construct("_MYFORMHTML");
    $this->resigsterInput("_NAME","isValidateName", "");
    $this->resigsterInput("_EMAIL","isValidateEmail", "");
    $this->resigsterInput("_PHONE","isValidatePhone", "");
  }
  protected function initialize(){
   $this->setInputValue("_NAME","Alce");
  }
  protected function onInvalidate(){
  }
  protected function onValidate(){
  }
  public static function isValidateName($value){
    return self::isNotEmpty($value);
  }
  public static function isValidateEmail($value){
    if(!self::isNotEmpty($value)) return FALSE;
    if(!self::isEmail($value)) return FALSE;
    return TRUE;
  }
  public static function isValidatePhone($value){
    if(!self::isNotEmpty($value)) return FALSE;
    if(!self::isUSPhoneNumber($value)) return FALSE;
    return TRUE;
  }
}
?>

################## index.php ##################
<?php
 include_once ("CMyFormHTML.class.php");
 $myForm =  new CMyFormHTML();
 if($myForm->isPosted()){
   if($myForm->isValidate()){
    // ...
   } else {
    // ...
   }
 }
?>
<html>
<head>
<title>Sample: CPhanaticFormHTML</title>
</head>
<body>
<form name="_MYFORMHTML" method="post">
<!-- ne pas oublier de déclarer un champ chaché du même nom que le formulaire -->
<input type="hidden" name="_MYFORMHTML" value="OK">

<p>name&nbsp;:&nbsp;
  <input name="_NAME" value=\"<?php=$myForm->getInputValue("_NAME")?>\">
  <font color="red"><?php=$myForm->getInputMessage("_NAME")?></font>
</p>
<p>email&nbsp;:&nbsp;
  <input name="_EMAIL" value=\"<?php=$myForm->getInputValue("_EMAIL")?>\">
  <font color="red"><?php=$myForm->getInputMessage("_EMAIL")?></font>
</p>
<p>phone&nbsp;:&nbsp;
  <input name="_PHONE" value=\"<?php=$myForm->getInputValue("_PHONE")?>\">
  <font color="red"><?php=$myForm->getInputMessage("_PHONE")?></font>
</p>
<p>
<input type=submit value=Submit name=B1>
</p>
</form>
</body>
</html>



 Sources de la même categorie

Source avec Zip GÉNÉRATION AUTOMATIQUE DE FICHIER .CLASS.PHP EN FONCTION D'U... par ig3
CLASSE D'OBJET DE CRYPTAGE ET DÉCRYPTAGE DE CHAINES DE CARAC... par 8Tnerolf8
Source avec Zip MY.DEVIANTART API par inwebo
CLASSE DE GESTION DE "VARIABLES GLOBALES D'ENVIRONNEMENT" par pifou25
Source avec Zip COLLECTION.CLASS.MIN.PHP par thunderhunter

Commentaires et avis

Commentaire de marik7335 le 10/11/2004 21:51:30

Salut,
Ton code est interessant. Par contre, je trouve qu'il n'y a pas assez de commentaires sinon je te félicite pour ton travail.
Cordialement
Marik7335

Commentaire de issam_vb le 06/01/2009 23:01:00

Bonjours,

c'est un bon code, sauf qelques erreurs dans la syntaxe au niveau de la page index.php il faut enlever les = apres les balises php. et au niveau de la page CPhanaticFormHTML.class.php dans la ligne 167 enlève la derniere pranthese.

bon courage

Commentaire de morpheus507 le 07/01/2009 09:46:53

Bonjour,

C'est vrai que cela manque de commentaires c'est dommage, sinon je trouve le code bon (je l'ai testé).

Personne ne sait comment réaliser un formulaire d'authentification à l'aide de ZendFramework ?

Merci.

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,390 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales