Share Pastebin
Guest
Public paste!

Untitled

By: a guest | Mar 21st, 2010 | Syntax: PHP | Size: 4.40 KB | Hits: 118 | Expires: Never
This paste has a previous version, view the difference. Copy text to clipboard
  1. <?php
  2. class Validar_campos {
  3.  
  4.         public $campos = array();
  5.         public $mensaje = array();
  6.         public $html = true;
  7.  
  8.         public function Validar_campos() {
  9.                 $this->mostrar_error();
  10.         }
  11.         public function validar() {
  12.                 $estado = 0;
  13.                 foreach ($this->campos as $key => $val) {
  14.                         switch ($val['tipo']) {
  15.                                 case "entero":
  16.                                 if (!$this->validar_numero($val['valor'], $key, $val['longitud'], $val['obligatorio'])) {
  17.                                         $estado++;
  18.                                 }
  19.                                 break;
  20.                                 case "decimal":
  21.                                 if (!$this->validar_decimal($val['valor'], $key, $val['decimales'], $val['obligatorio'])) {
  22.                                         $estado++;
  23.                                 }
  24.                                 break;
  25.                                 case "texto":
  26.                                 if (!$this->validar_texto($val['valor'], $key, $val['longitud'], $val['obligatorio'])) {
  27.                                         $estado++;
  28.                                 }
  29.                                 break;
  30.                         }
  31.                         if ($this->html) {
  32.                                 if (!$this->validar_html($val['valor'], $key)) {
  33.                                         $estado++;
  34.                                 }
  35.                         }
  36.                 }
  37.                 if ($estado == 0) {
  38.                         return true;
  39.                 } else {
  40.                         $this->mensaje[] = $this->error(0);
  41.                         return false;
  42.                 }
  43.         }
  44.         public function campo_texto($nombre, $val, $tipo = "texto", $obligatorio = "si", $longitud = 0) {
  45.                 $this->campos[$nombre]['valor'] = $val;
  46.                 $this->campos[$nombre]['tipo'] = $tipo;
  47.                 $this->campos[$nombre]['obligatorio'] = $obligatorio;
  48.                 $this->campos[$nombre]['longitud'] = $longitud;
  49.         }
  50.         public function campo_numero($nombre, $val, $tipo = "entero", $obligatorio = "si", $decimales = 0, $longitud = 0) {
  51.                 $this->campos[$nombre]['valor'] = $val;
  52.                 $this->campos[$nombre]['tipo'] = $tipo;
  53.                 $this->campos[$nombre]['obligatorio'] = $obligatorio;
  54.                 $this->campos[$nombre]['decimales'] = $decimales;
  55.                 $this->campos[$nombre]['longitud'] = $longitud;
  56.         }
  57.  
  58.         public function validar_numero($numero, $campo, $numero_longitud = 0, $obligatorio = "no") {
  59.                 if ($numero == "") {
  60.                         if ($obligatorio == "si") {
  61.                                 $this->mensaje[] = $this->error(1, $campo);
  62.                                 return false;
  63.                         } else {
  64.                                 return true;
  65.                         }
  66.                 } else {
  67.                         $patron = ($numero_longitud == 0) ? "/^\-?[0-9]*$/" : "/^\-?[0-9]{0,".$numero_longitud."}$/";
  68.                         if (preg_match($patron, $numero)) {
  69.                                 return true;
  70.                         } else {
  71.                                 $this->mensaje[] = $this->error(12, $campo);
  72.                                 return false;
  73.                         }
  74.                 }
  75.         }
  76.         public function validar_texto($texto, $campo, $texto_longitud = 0, $obligatorio = "si") {
  77.                 if (empty($texto)) {
  78.                         if ($obligatorio == "si") {
  79.                                 $this->mensaje[] = $this->error(1, $campo);
  80.                                 return false;
  81.                         } else {
  82.                                 return true;
  83.                         }
  84.                 } else {
  85.                         if ($texto_longitud > 0) {
  86.                                 if (strlen($texto) > $texto_longitud) {
  87.                                         $this->mensaje[] = $this->error(13, $campo);
  88.                                         return false;
  89.                                 } else {
  90.                                         return true;
  91.                                 }
  92.                         } else {
  93.                                 return true;
  94.                         }
  95.                 }
  96.         }
  97.         public function validar_decimal($numero_decimal, $campo, $decimales = 2, $obligatorio = "no") {
  98.                 if ($numero_decimal == "") {
  99.                         if ($obligatorio == "si") {
  100.                                 $this->mensaje[] = $this->error(1, $campo);
  101.                                 return false;
  102.                         } else {
  103.                                 return true;
  104.                         }
  105.                 } else {
  106.                         $patron = "/^[-]*[0-9][0-9]*\.[0-9]{".$decimales."}$/";
  107.                         if (preg_match($patron, $numero_decimal)) {
  108.                                 return true;
  109.                         } else {
  110.                                 $this->mensaje[] = $this->error(12, $campo);
  111.                                 return false;
  112.                         }
  113.                 }
  114.         }
  115.         public function validar_html($valor, $campo) {
  116.                 if (preg_match("/<[a-z1-6]+((\s[a-z]{2,}=['\"]?(.*)['\"]?)+(\s?\/)?)*>(<\/[a-z1-6]>)?/i", $valor)) {
  117.                         $this->mensaje[] = $this->error(15, $campo);
  118.                         return false;
  119.                 } else {
  120.                         return true;
  121.                 }
  122.         }
  123.         public function mostrar_error($separador = "<br />") {
  124.                 $mensaje_error = "";
  125.                 krsort($this->mensaje);
  126.                 reset($this->mensaje);
  127.                 foreach ($this->mensaje as $valor) {
  128.                         $mensaje_error .= $valor.$separador."\n";
  129.                 }
  130.                 return $mensaje_error;
  131.         }
  132.         public function error($numero, $campo = "") {
  133.                 $campo = str_replace("_", " ", $campo);
  134.  
  135.                         $error[0] = "Por favor corrija los siguientes errores:";
  136.                         $error[1] = "El campo <b>".$campo."</b> est&aacute; vac&iacute;o.";
  137.                         $error[10] = "La fecha del campo <b>".$campo."</b> no es v&aacute;lida.";
  138.                         $error[11] = "La direcci&oacute;n de correo electr&oacute;nico del campo <b>".$campo."</b> no es v&aacute;lida.";
  139.                         $error[12] = "El valor en el campo <b>".$campo."</b> no es v&aacute;lido.";
  140.                         $error[13] = "El texto en el campo <b>".$campo."</b> es demasiado largo.";
  141.                         $error[14] = "La URL en el campo <b>".$campo."</b> no es v&aacute;lida.";
  142.                         $error[15] = "Hay c&oacute;digo HTML en el campo <b>".$campo."</b>, esto no est&aacute; permitido.";
  143.          
  144.                 return $error[$numero];
  145.         }
  146. }
  147. ?>