Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Klasa do walidacji formularza - opinia
moto0095
post
Post #1





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 12.03.2010

Ostrzeżenie: (0%)
-----


Witam. Napisałem ostatnio klasę do walidacji formularza.
I prosiłbym o opinię oraz porady np: co trzeba/można zmienić.
  1. <?
  2. class FormValidator {
  3. private $error = array();
  4. private $elem = array();
  5.  
  6. public function validate($name, $error = '', $filter = array()) {
  7. $this->error = $error;
  8. foreach($filter as $key => $value) {
  9. $this->filter($name, $key, $value);
  10. }
  11. }
  12.  
  13. private function filter($name, $filter, $par = FALSE) {
  14. switch($filter) {
  15. case 'req' :
  16. if(!isset($name) || empty($name) || $par == TRUE) {
  17. $this->set_error('Pole jest wymagane i nie może pozostać puste.');
  18. }
  19. break;
  20.  
  21. case 'email' :
  22. if(!filter_var($name, FILTER_VALIDATE_EMAIL) || $par == TRUE) {
  23. $this->set_error('Podany adres e-mail jest niepoprawny');
  24. }
  25. break;
  26.  
  27. case 'url' :
  28. if(!filter_var($name, FILTER_VALIDATE_URL) || $par == TRUE) {
  29. $this->set_error('Podany adres URL jest niepoprawny');
  30. }
  31. break;
  32.  
  33. case 'num' :
  34. if(!preg_match('/^[0-9 ]+$/', $name) || $par == TRUE) {
  35. $this->set_error('Ple musi zawierać wyłącznie znaki numeryczne');
  36. }
  37. break;
  38.  
  39. case 'alfa' :
  40. if(!preg_match('/^[a-zA-Z ]+$/', $name) || $par == TRUE) {
  41. $this->set_error('Ple musi zawierać wyłącznie litery');
  42. }
  43. break;
  44.  
  45. case 'alnum' :
  46. if(!preg_match('/^[a-zA-Z0-9 ]+$/', $name) || $par == TRUE) {
  47. $this->set_error('Ple musi zawierać wyłącznie znaki alfanumeryczne');
  48. }
  49. break;
  50.  
  51. case 'max' :
  52. if(strlen(trim($name)) > $par) {
  53. $this->set_error('Pole musi mieć maxymalną długość '.$par.'.');
  54. }
  55. break;
  56.  
  57. case 'min' :
  58. if(strlen(trim($name)) < $par) {
  59. $this->set_error('Pole musi mieć minimalną długość '.$par.'.');
  60. }
  61. break;
  62.  
  63. case 'length' :
  64. if(strlen(trim($name)) == $par) {
  65. $this->set_error('Pole musi mieć mieć długość '.$par.'.');
  66. }
  67. break;
  68.  
  69. /* ORAZ INNE FILTRY */
  70. }
  71. }
  72.  
  73. private function set_error($str) {
  74. $this->errors[] = (empty($this->error) ? $str : '<b>'.$this->error.'</b> : '.$str);
  75. }
  76.  
  77. public function get_error($str) {
  78. return $this->errors[$str];
  79. }
  80.  
  81. public function get_errors() {
  82. foreach($this->errors as $err) {
  83. echo $err.'<br />';
  84. }
  85. }
  86.  
  87. public function is_valid() {
  88. return (count($this->errors) > 0) ? FALSE : TRUE;
  89. }
  90.  
  91. }
  92. ?>


Przykład użycia:

  1. include_once('class.form_validator.php');
  2.  
  3. $val = new FormValidator;
  4.  
  5. $val->validate($_POST['email'], 'Email', array('req' => TRUE, 'min' => 10, 'email' => TRUE));
  6.  
  7. if($val->is_valid()) {
  8. echo 'OK';
  9. }else {
  10. $val->get_errors();
  11. }


Ten post edytował moto0095 26.12.2010, 23:13:51
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 09:09