Menú
Gratis
Registro
hogar  /  Programas/ Loca validación de php. Validación y limpieza de datos usando PHP

Validación loca php. Validación y limpieza de datos usando PHP

Es muy esencial validar la entrada de su formulario antes de tomar los datos de envío del formulario para su posterior procesamiento. Cuando hay muchos campos en el formulario, el script de validación de PHP se vuelve demasiado complejo. Dado que está haciendo la misma validación o una similar para la mayoría de los formularios que crea, se gasta demasiado esfuerzo duplicado en las validaciones de formularios.

Acerca de este script genérico de validación de formulario PHP

Este script de validación de formulario PHP genérico hace que sea muy fácil agregar validaciones a su formulario.

Creamos y asociamos un conjunto de "descriptores de validación" con cada elemento del formulario. El "descriptor de validación" es una cadena que especifica el tipo de validación a realizar. Por ejemplo, "req" significa obligatorio, "alpha" significa permitir solo caracteres alfabéticos, etc.

Cada campo del formulario puede tener cero, una o más validaciones. Por ejemplo, la entrada no debe estar vacía, debe tener menos de 25 caracteres, debe ser alfanumérica, etc.

Puede asociar un conjunto de descriptores de validación para cada campo de entrada en el formulario.

Descargue el script de validación de formulario PHP

Puede descargar el script de validación del formulario PHP a continuación:
El archivo zip contiene el script de validación de formularios formvalidator.php, documentación y ejemplos de uso.

Usando el script de validación de formulario PHP
  • Incluya formvalidator.php en su secuencia de comandos de procesamiento de formularios
  • require_once "formulario.php"
  • Crear un FormValidator objeto y agregue los descriptores de validación de formulario.
  • $validador = new FormValidator(); $validator->addValidation("Nombre","req","Rellene el nombre"); $validator->addValidation("Correo electrónico","correo electrónico", "La entrada para Correo electrónico debe ser un valor de correo electrónico válido"); $validator->addValidation("Correo electrónico","requerido","Complete el correo electrónico");

    El primer argumento es el nombre del campo de entrada en el formulario. El segundo argumento es el descriptor de validación que indica el tipo de validación requerida. El tercer argumento es el mensaje de error que se mostrará si falla la validación.

  • Valide el formulario llamando a la función ValidateForm()
  • if(!$validator->ValidateForm()) ( echo "Errores de validación:"; $error_hash = $validator->GetErrors(); foreach($error_hash as $inpname => $inp_err) ( echo "

    $inpname: $inp_err

    \n"; ) ) Ejemplo

    El siguiente ejemplo aclarará la idea.

    Nombre Correo Electronico:

    Adición de validación personalizada

    Si desea agregar una validación personalizada, que no es proporcionada por los descriptores de validación, puede hacerlo. Aquí están los pasos:

  • Cree una clase para la validación personalizada y anule la función DoValidate()
  • class MyValidator extiende CustomValidator ( function DoValidate(&$formars,&$error_hash) ( if(stristr($formars["Comments"],"http://")) ( $error_hash["Comments"]="No se permiten URL en comentarios"; devuelve falso; ) devuelve verdadero; ) )

  • Agregar el objeto de validación personalizado
  • $validador = new FormValidator(); $validator->addValidation("Nombre","req","Rellene el nombre"); $validator->addValidation("Correo electrónico","correo electrónico", "La entrada para Correo electrónico debe ser un valor de correo electrónico válido"); $validator->addValidation("Correo electrónico","requerido","Complete el correo electrónico"); $validador_personalizado = new MiValidador(); $validador->AddCustomValidator($custom_validator);

    La función de validación personalizada se llamará automáticamente después de otras validaciones.

    Tabla de Descriptores de Validación

    Aquí está la lista de todos los descriptores de validación:

    Descriptor de validaciónUso
    requerimientoEl campo no debe estar vacío.
    maxlen=???comprueba al máximo la longitud de los datos introducidos. Por ejemplo, si el tamaño máximo permitido es 25, proporcione el descriptor de validación como "maxlen=25"
    minlen=???verifica la longitud de la cadena ingresada al mínimo requerido. ejemplo "minlen=5"
    alnumVerifique los datos si contienen otros caracteres que no sean caracteres alfabéticos o numéricos
    alnum_sSolo permite caracteres alfabéticos, numéricos y de espacio
    númeroComprobar datos numéricos
    alfaConsultar datos alfabéticos.
    alfa_sVerifique los datos alfabéticos y permita espacios.
    correo electrónicoEl campo es un campo de correo electrónico y verifica la validez de los datos.
    lt=???
    menos que =???
    Verifique que los datos sean menores que el valor pasado. Válido solo para campos numéricos.
    ejemplo: si el valor debe ser inferior a 1000, proporcione una descripción de validación como "lt = 1000"
    gt=???
    mayor que=???
    Verifique que los datos sean mayores que el valor pasado. Válido solo para campos numéricos.
    ejemplo: si el valor debe ser mayor que 10, proporcione una descripción de validación como "gt = 10"
    expresión regular =???Compruebe con una expresión regular que el valor debe coincidir con la expresión regular.
    ejemplo: “regexp=^(1,20)$” permite hasta 20 caracteres alfabéticos.
    no seleccionar=??Este descriptor de validación es para seleccionar elementos de entrada (listas). Normalmente, los cuadros de lista de selección tendrán un elemento que dice "Seleccionar uno". El usuario debe seleccionar una opción diferente a esta opción. Si el valor de esta opción es 'Seleccionar uno', la descripción de validación debe ser "no seleccionar = Seleccionar uno"
    noseleccionarEste descriptor de validación es para casillas de verificación. El usuario no debe seleccionar la casilla de verificación dada. Proporcione el valor de la casilla de verificación en lugar de ??
    Por ejemplo, dontelectchk=on
    deberíaseleccionarEste descriptor de validación es para casillas de verificación. El usuario debe seleccionar la casilla de verificación dada. Proporcione el valor de la casilla de verificación en lugar de ??
    Por ejemplo, shouldselchk=on
    noseleccionarradioEste descriptor de validación es para botones de radio. El usuario no debe seleccionar el botón de opción dado. Proporcione el valor del botón de opción en lugar de ??
    Por ejemplo, dontelectradio=NO
    selectradioEste descriptor de validación es para botones de radio. El usuario debe seleccionar el botón de radio dado. Proporcione el valor del botón de opción en lugar de ??
    Por ejemplo, selectradio=yes
    selmin=??Seleccione al menos n número de casillas de verificación de un grupo de casillas de verificación.
    Por ejemplo: selmin=3
    soloHace obligatorio un grupo de radio. El usuario debe seleccionar al menos un elemento del grupo de radio.
    eqelmnt=???compare dos elementos en el formulario y asegúrese de que los valores sean los mismos. Por ejemplo, 'contraseña' y 'confirmar contraseña'. Reemplace la ??? con el nombre del otro elemento de entrada.
    Por ejemplo: eqelmnt=confirm_pwd

    Casi todas las aplicaciones web interactivas necesitan validar la entrada. Por ejemplo, el formulario de registro probablemente requerirá una contraseña para su confirmación. Tal vez una dirección Correo electrónico debe ser único. La validación de datos puede ser un proceso engorroso. Por suerte, no en Laravel.La clase Validator proporciona un increíble conjunto de ayudantes de validación, lo que hace que la validación de datos sea lo más fácil posible. Veamos un ejemplo:

    Obtener una matriz de datos para la validación: $input = Input::all(); Definición de reglas de validación de datos: $rules = array("name" => "requerido|max:50", "email" => "requerido|email|único:usuarios",); Crear una instancia de Validator y validar los datos: $validation = Validator::make($input, $rules); if ($validación->falla()) (retorna $validación->errores; )

    Cuando hay una propiedad errores obtiene acceso al recopilador de mensajes, que le permite crear fácilmente sus propios mensajes de error. Por supuesto, todas las reglas de validación tienen mensajes de error por defecto. Los mensajes de error estándar están en language/en/validation.php.

    Ahora está familiarizado con las reglas básicas para usar la clase Validator. ¡Está listo para explorar y aprender las reglas utilizadas para validar sus datos!

    Reglas de validación Datos requeridos Verifique un valor de parámetro no vacío requerido: "nombre" => "requerido" Alfa, alfanumérico y guión alfa Verifique solo letras: "nombre" => "alfa" Verifique solo letras y números: "nombre de usuario " => "alpha_num" Comprobar solo letras, números, guiones y guiones bajos: "username" => "alpha_dash" Tamaño Comprobar el tamaño de cadena de un atributo de cadena o el rango de valores de un atributo numérico: "nombre" => "tamaño:10" Verifique un rango de valores: "pago" => "entre:10.50"

    Nota: El mínimo y el máximo están incluidos en el rango.

    Comprobando el tamaño mínimo del atributo: "pago" => "min:10" Comprobando talla máxima atributo: "pago" => "max:50" Tipos numéricos Comprobar si un atributo pertenece a un tipo numérico: "pago" => "numérico" Comprobar si un atributo pertenece a un tipo entero: "pago" => "entero" entrada en la matriz de valores: "tamaño" => "en: pequeño, mediano, grande" Comprobación del atributo en busca de una excepción de la matriz de valores: "idioma" => "no_en: cobol, ensamblador" Confirmación

    regla confirmado comprueba que para atributo dado hay una confirmación de atributo coincidente*.

    Comprobar atributo para confirmación: "contraseña" => "confirmado"

    En este ejemplo, el Validador comprueba que el parámetro contraseña satisface las condiciones confirmación de contraseña de la matriz de validación.

    Aceptación

    regla aceptado comprueba el parámetro para un valor o 1 . Esta regla verifica las casillas de verificación obligatorias, como la casilla de verificación "Términos de servicio".

    Comprobación de aceptación: "términos" => "aceptado" Correspondencias y diferencias Comprobación de que un atributo es el mismo que otro atributo que se compara: "token1" => "igual: token2" Comprobación de que un atributo tiene un valor diferente: "contraseña" => "diferente:antigua_contraseña", expresiones regulares

    regla fósforo comprueba el atributo para la satisfacción expresión regular.

    Comprobación de expresiones regulares: "nombre de usuario" => "coincidencia:/+/"; Unicidad y existencia Comprobación de la unicidad del parámetro en la base de datos: "email" => "unique:users"

    En este ejemplo, la configuración correo electrónico verificado por unicidad en la tabla usuarios. ¿Necesita verificar la unicidad de un atributo de otra columna además de esta? Ningún problema:

    Especificando otra columna para verificar: "correo electrónico" => "único: usuarios, dirección de correo electrónico"

    A menudo, al actualizar un registro, desea utilizar la regla de exclusividad, pero excluir el registro que se está actualizando. Por ejemplo, desea permitir que los usuarios cambien sus direcciones de correo electrónico. Pero cuando se ejecuta la regla único, debe omitir este usuario para no causar un error de validación imaginario. Es sencillo:

    Ignorar el ID especificado: "email" => "unique:users,email_address,10" Verificar si el atributo existe en la base de datos especificada: "state" => "exists:states" Especificar el nombre de columna para la regla de existencia: "state " => " existe:estados,abreviatura" Fechas Compruebe si el parámetro de fecha es anterior a...: "fecha de nacimiento" => "antes de:1986-28-05"; Comprobando si el parámetro de fecha es posterior a...: "fecha de nacimiento" => "después de: 28-05-1986";

    Nota: Comprobación antes y después de los usos Función PHP strtotime.

    Direcciones de correo electrónico Comprobación de que el parámetro es Dirección de correo electrónico: "dirección" => "correo electrónico"

    Nota: esta regla usa el método incorporado de PHP filter_var.

    URL Verifique si el parámetro es una URL: "enlace" => "url" Verifique si el parámetro es una URL activa: "enlace" => "active_url"

    Nota: Regla active_url usos comprobar dnsr para comprobar si la URL está activa.

    Descargas

    Normas mimos compruebe que el archivo cargado coincida con el tipo MIME. Esta regla utiliza extensión PHP Fileinfo que comprueba el contenido de un archivo y determina su tipo. Cualquier extensión de archivo que se aplique a esta regla se define en config/mimes.php.

    Comprobando si un archivo pertenece a un tipo específico: "imagen" => "mimes:jpg,gif"

    Nota: Al verificar, no olvide usar Input::file() o Input::all().

    Verificando si el archivo es una imagen: "imagen" => "imagen" Verificando el tamaño del archivo: "imagen" => "imagen|max:100" Solicitando un mensaje de error

    Laravel te permite trabajar con mensajes de error con una clase de colector de error simple. Después de llamar a los métodos pasa o falla instancia del Validador, puede acceder al error usando la propiedad errores. El recopilador de errores tiene funciones simples para consultar mensajes de error:

    Determinar si un atributo tiene un mensaje de error: if ($validación->errores->has("email")) ( // El atributo de correo electrónico tiene errores... ) Solicitar el primer mensaje de error para un atributo: echo $ validación ->errores->primero("correo electrónico");

    Es posible que deba envolver su mensaje de error en etiquetas HTML. Ningún problema. Al llamar a :message place-holder, especifique el formato como segundo parámetro del método.

    Formateo del mensaje de error: echo $validación->errores->primero("correo electrónico", ""); Obtenga todos los mensajes de error para un atributo: $mensajes = $validación->errores->get("correo electrónico"); Formateo de todos los mensajes de error para un atributo: $mensajes = $validación->errores->get("correo electrónico", ""); Obtenga todos los mensajes de error para todos los atributos: $mensajes = $validación->errores->todos(); Formateo de todos los mensajes de error para todos los atributos: $mensajes = $validación->errores->todo(""); Aprobando la validación

    Una vez que haya completado su validación, necesita una manera fácil de mostrar los errores en la vista. Laravel lo hace muy fácil. Veamos un escenario típico. Esto se puede definir de dos maneras:

    Route::get("registrar", function() (return View::make("user.register"); )); Route::post("registrar", function() ( $reglas = array(...); $validación = Validator::make(Input::all(), $reglas); if ($validación->falla( )) (return Redirect::to("registrar")->with_errors($validation); ) ));

    ¡Excelente! Entonces, tenemos dos rutas simples para el formulario de registro. Uno para manejar la visualización de formularios y otro para manejar la entrada de formularios. En la ruta POST, hacemos alguna validación en la entrada. Si no se pasa la verificación, lo redireccionaremos al formulario de registro indicando errores y mostrando lo último en el formulario.

    Pero tenga en cuenta que no asociamos errores explícitamente con un objetivo en nuestra ruta GET. Sin embargo, la variable de error estará disponible en la vista. Laravel determina de manera inteligente si hay errores en la sesión y, de ser así, adjunta mensajes a la vista. Si no hay errores, se adjuntará a la vista un contenedor de mensajes de error vacío. La vista siempre tendrá disponible un contenedor de mensajes de error. Nos gusta hacerte la vida más fácil.

    Mensajes de error personalizados

    ¿Quieres usar tu propio mensaje de error? Tal vez incluso quiera usar mensajes de error personalizados para un atributo y una regla determinados. En cualquier caso, la clase Validator facilita hacer esto.

    Creación de una matriz de mensajes de error personalizados para el Validador: $mensajes = matriz("requerido" => "El:campo de atributo es requerido.",); $validación = Validator::make(Input::get(), $reglas, $mensajes);

    ¡Excelente! Ahora nuestros mensajes personalizados siempre se usarán al verificar. Pero, ¿cuál es la expresión de atributo en nuestra publicación? Para facilitarle la vida, la clase Validator reemplaza :attribute con el atributo que causó el error. Incluso eliminará el carácter de subrayado del nombre del atributo. También puede usar los marcadores de posición :other, :size, :min, :max y :values ​​para construir sus mensajes de error.

    Ejemplos de mensajes de error personalizados: $messages = array("mismo" => "El:atributo y:otro deben coincidir.", "tamaño" => "El:atributo debe ser exactamente:tamaño.", "entre" => " El:atributo debe estar entre:min - :max.", "in" => "El:atributo debe ser uno de los siguientes tipos: :valores",);

    ¿Qué sucede si necesita definir el mensaje requerido, pero solo para el atributo de correo electrónico? Ningún problema. Simplemente especifique el mensaje usando el nombre de la regla del atributo:

    Definición de un mensaje para un atributo específico: $mensajes = array("email_required" => "¡Necesitamos saber su dirección de correo electrónico!",);

    En este ejemplo, el mensaje de error personalizado solo se usará para el atributo de correo electrónico; de lo contrario, se usarán mensajes estándar.

    Al mismo tiempo, si usa muchos de sus propios mensajes de error, incluirlos todos en su código puede volverlo engorroso e inconveniente. Por esta razón, es posible definir su propia matriz en el archivo de idioma:

    Adición de una matriz personalizada al archivo de idioma: "custom" => array("email_required" => "¡Necesitamos saber su dirección de correo electrónico!",) Reglas de validación personalizadas

    Laravel proporciona una serie de poderosas reglas de validación. Sin embargo, puedes crear el tuyo propio. Hay dos maneras simples creación de reglas de validación. Ambos son fiables de usar. Solo tienes que elegir el más adecuado para tu proyecto.

    Registrar su propia regla de validación: Validator::register("impresionante", function($atributo, $valor, $parámetros) ( return $valor == "impresionante"; }); !}

    En este ejemplo, hemos registrado nuevas reglas de validación para la clase Validator. Esta regla toma tres parámetros. El primero es el nombre del atributo que se verifica, el segundo es el valor del atributo que se verifica y el tercero es una matriz de los parámetros que se establecieron para la regla.

    Así es como se ve la llamada de su regla:

    $reglas = array("usuario" => "requerido|impresionante",);

    Por supuesto, debe definir un mensaje de error para la nueva regla. Puede hacer esto en mensajes de matriz especiales:

    $mensajes = array("increíble" => "¡El valor del atributo debe ser increíble!",); $validador = Validator::make(Input::get(), $reglas, $mensajes);

    o agregando una entrada para la regla en language/en/validation.php:

    "awesome" => "¡El valor del atributo debe ser asombroso!",

    Como se mencionó anteriormente, incluso puede especificar y obtener una lista de parámetros en una regla personalizada:

    // Al crear una regla... $reglas = array("nombre de usuario" => "requerido|impresionante:sí",); // En la regla... Validator::register("impresionante", function($atributo, $valor, $parámetros) ( return $valor == $parámetros; )

    En este ejemplo, el parámetro arguments de su regla de validación recibirá una matriz que contiene un elemento: "sí".

    Otra forma de crear y almacenar reglas de validación personalizadas es extender la clase Validator. Además, gracias a los espacios de nombres en Laravel, esta clase puede extenderse. Así creas nueva versión un validador que reúne todas las funcionalidades existentes anteriormente combinadas con nuevas incorporaciones. Incluso puede optar por anular algunos de los métodos predeterminados si lo desea. Veamos un ejemplo:

    Primero, cree una clase Validator que herede la clase Laravel\Validator y colóquela en application/libraries :

    Definición de clase personalizada: