|  Les deux révisions précédentes Révision précédente Prochaine révision |  Révision précédente | 
| slam4:php:codeigniter:validation [2012/12/09 00:14]  – [Formulaire]  jcheron | slam4:php:codeigniter:validation [2019/08/31 14:21] (Version actuelle)  – modification externe 127.0.0.1 | 
|---|
| ====== Validation des formulaires ====== | ====== Validation des formulaires ====== | 
 |  | 
| <html><div class="btn"><a href="/doku.php?id=slam4:php:codeigniter:session" class="wikilink1" title="Bibliothèque session"><< Sessions</a></div></html><html><div class="btn"><a href="/doku.php?id=slam4:php:codeigniter:database" class="wikilink1" title="Bibliothèque database">Bibliothèque database >></a></div></html> | <html><div class="btn"><a href="/doku.php?id=slam4:php:codeigniter:session" class="wikilink1" title="Bibliothèque session"><< Sessions</a></div></html><html><div class="btn"><a href="/doku.php?id=slam4:php:codeigniter:orm" class="wikilink1" title="ORM">ORM IgnitedRecord >></a></div></html>  | 
|   |   | 
|   |   - [[slam4:php:codeigniter|Introduction à CodeIgniter]]  | 
|   |   - [[slam4:php:codeigniter:helpers|Helpers]]  | 
|   |   - [[slam4:php:codeigniter:libraries|Bibliothèques]]  | 
|   |   - [[slam4:php:codeigniter:session|Sessions CodeIgniter]]  | 
|   |   - Validation des formulaires  | 
|   |   - [[slam4:php:codeigniter:orm|ORM IgnitedRecord]]  | 
|   |   - [[slam4:php:codeigniter:doctrine|Doctrine]]  | 
|   |   - [[slam4:php:codeigniter:javascript|Javascript et codeIgniter]] | 
 |  | 
|   * [[http://ellislab.com/codeigniter/user-guide/libraries/form_validation.html| Aide codeIgniter sur la librairie form_validation]] |   * [[http://ellislab.com/codeigniter/user-guide/libraries/form_validation.html| Aide codeIgniter sur la librairie form_validation]] | 
 |  | 
| La bibliothèque **form_validation** doit être chargée : | La bibliothèque **form_validation** prend en charge le contrôle et la validation des formulaires, et l'affichage de messages d'erreur.\\  | 
|   | **form_validation** doit être chargée : | 
|   * soit automatiquement avec autoload.php :  |   * soit automatiquement avec autoload.php :  | 
 |  | 
|   * Soit dans le code d'un contrôleur par exemple : |   * Soit dans le code d'un contrôleur par exemple : | 
| <code php> | <code php> | 
| $this->load->library('session'); | $this->load->library('form_validation'); | 
| </code> | </code> | 
 |  | 
| ?> | ?> | 
| </code> | </code> | 
|   | ==== Ajout de règles en cascade ==== | 
|   | Remplacer les règles précédentes par : | 
|   | <code php> | 
|   | $this->form_validation->set_rules('username', 'Nom d''utilisateur', 'trim|required|min_length[5]|max_length[12]|xss_clean'); | 
|   | $this->form_validation->set_rules('password', 'Mot de passe', 'trim|required|matches[passconf]|md5'); | 
|   | $this->form_validation->set_rules('passconf', 'Confirmation', 'trim|required'); | 
|   | $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email'); | 
|   | </code> | 
|   |  | 
|   | Le contrôle inclut cette fois une transformation de la valeur des champs avant validation : | 
|   |   * trim supprime les espaces avant et après | 
|   |   * md5 crypte en md5 | 
|   |   * xss_clean supprime tous les éléments susceptibles de permettre une attaque xss (Cross Site Scripting)  | 
|   |  | 
|   | ==== Ajout d'une fonction de validation utilisateur ==== | 
|   |  | 
|   | <code php |h form.php> | 
|   | <?php | 
|   |  | 
|   | class Form extends CI_Controller { | 
|   |  | 
|   | 	public function index() | 
|   | 	{ | 
|   | 		$this->load->helper(array('form', 'url')); | 
|   |  | 
|   | 		$this->load->library('form_validation'); | 
|   |  | 
|   | 		$this->form_validation->set_rules('username', 'Nom d''utilisateur', 'callback_username_check'); | 
|   | 		$this->form_validation->set_rules('password', 'Mot de passe', 'required'); | 
|   | 		$this->form_validation->set_rules('passconf', 'Confirmation', 'required'); | 
|   | 		$this->form_validation->set_rules('email', 'Email', 'required|is_unique[users.email]'); | 
|   |  | 
|   | 		if ($this->form_validation->run() == FALSE) | 
|   | 		{ | 
|   | 			$this->load->view('myform'); | 
|   | 		} | 
|   | 		else | 
|   | 		{ | 
|   | 			$this->load->view('formsuccess'); | 
|   | 		} | 
|   | 	} | 
|   |  | 
|   | 	public function username_check($str) | 
|   | 	{ | 
|   | 		if ($str == 'test') | 
|   | 		{ | 
|   | 			$this->form_validation->set_message('username_check', 'Le champ %s ne peut pas être égal à "test"'); | 
|   | 			return FALSE; | 
|   | 		} | 
|   | 		else | 
|   | 		{ | 
|   | 			return TRUE; | 
|   | 		} | 
|   | 	} | 
|   |  | 
|   | } | 
|   | ?> | 
|   | </code> | 
|   |  | 
|   | ==== Affichage des valeur après échec de validation ==== | 
|   | On utilise **set_value('nomChamp')** pour afficher à nouveau la valeur de chacun des champs (excepté sur les mots de passe). | 
|   |  | 
|   | <code html |h myForm.php> | 
|   | <html> | 
|   | <head> | 
|   | <title>My Form</title> | 
|   | </head> | 
|   | <body> | 
|   |  | 
|   | <?php echo validation_errors(); ?> | 
|   |  | 
|   | <?php echo form_open('form'); ?> | 
|   |  | 
|   | <h5>Username</h5> | 
|   | <input type="text" name="username" value="<?php echo set_value('username'); ?>" size="50" /> | 
|   |  | 
|   | <h5>Password</h5> | 
|   | <input type="password" name="password" value="" size="50" /> | 
|   |  | 
|   | <h5>Password Confirm</h5> | 
|   | <input type="password" name="passconf" value="" size="50" /> | 
|   |  | 
|   | <h5>Email Address</h5> | 
|   | <input type="text" name="email" value="<?php echo set_value('email'); ?>" size="50" /> | 
|   |  | 
|   | <div><input type="submit" value="Submit" /></div> | 
|   |  | 
|   | </form> | 
|   |  | 
|   | </body> | 
|   | </html> | 
|   | </code> | 
|   |  | 
|   | <html><div class="btn"><a href="/doku.php?id=slam4:php:codeigniter:session" class="wikilink1" title="Bibliothèque session"><< Sessions</a></div></html><html><div class="btn"><a href="/doku.php?id=slam4:php:codeigniter:orm" class="wikilink1" title="ORM">ORM IgnitedRecord >></a></div></html> |