Ir al contenido principal

Validar DNI en un formulario

L

a librería validate de jQuery nos permite validar múltiples formatos, pero lo mejor de todo es que es totalmente configurable.

Cuando estamos creando un formulario en el que los usuarios han de insertar sus datos, muchas veces necesitamos que introduzcan su verdadero DNI. Para comprobarlo, he creado dos funciones, una para la librería de jQuery y otra para validación en la parte del servidor con PHP.
Plugin de jQuery Validate



nif: function(value, element) {
if(/^([0-9]{8})*[a-zA-Z]+$/.test(value)){
var numero = value.substr(0,value.length-1);
var let = value.substr(value.length-1,1);
numero = numero % 23;
var letra='TRWAGMYFPDXBNJZSQVHLCKET';
letra=letra.substring(numero,numero+1);
if (letra==let)
return true;
return false;
}
return this.optional(element);
},

PHP



function compruebaNIF($num){
if (strlen($num)==9)
if(ereg("^([0-9])*([A-Z])$",$num))
if($ret = $this->compruebaLletraNIF($num))
return true;
if (strlen($num)==10)
if(ereg("^([0-9])*-*([A-Za-z])$",$num))
if($ret = $this->compruebaLletraNIF($num))
return true;
return false;
}

function compruebaLletraNIF ($dni) {
$valor= (int) ($dni / 23);
$valor *= 23;
$valor= $dni - $valor;
$lletres= "TRWAGMYFPDXBNJZSQVHLCKEO";
$lletraNif= substr ($lletres,$valor,1);
if($lletraNif==substr ($dni,-1,1))
return true;
return false;
}

Si no sabes cómo usar la librería Validate de jQuery lee el siguiente post:
Validación de formularios con jQuery


También puedes añadir más funciones:
Validar Fecha en formularios
Validar Email en formularios
Validar Número de cuenta bancaria en formularios


Comentarios

  1. Hola,

    Mi duda es cómo añadir la función. Va en el plugin validate o en el programa?

    ResponderEliminar
  2. Hola,
    La función para el plugin de jQuery va dentro del archivo jquery.validate.js y se ha de definir al igual que el resto de las funciones que vienen por defecto.

    Un saludo

    ResponderEliminar
  3. Hola!

    Donde iría la funcion y como se llamaría dicha función??

    Pon un ejemplo, estoy muy verde en esto del js :P.

    Gracias!!

    ResponderEliminar
  4. Hola, aunque tu pregunta es muy genérica intentaré explicarte un poco como van las dos funciones:
    1. La primera que ves pertenece a un pluing de jQuery. Te recomiendo que consultes el artículo "Validación de formularios con jQuery" para ver como se uas. Una vez que tengas el plugin en la carpeta que designes a tal efecto, tendrás un archio que se llamará jquery.validate.js y dentro de él es donde deberás especificar cada nueva función que quieras poner. Por defecto te trae una serie de validaciones, por lo que puedes mirar como están implementadas para después introducir las tuyas. Puedes probar a instalartelo y hacer alguna modificación en las funciones que ya vienen predefinidas y luego crear las tuyas propias.

    2. Respecto a la función en PHP, está pensada para realizar la validación en el lado del servidor, es decir, una vez que el usuario envía los datos desde un formulario. A mi me gusta mucho usar clases, y de ahi que use esta función, porque se encuentra dentro de una clase llamada "validacion". Lo que deberías hacer, de forma más general, es llamar a esta función llamada "compruebaNIF", a la que le pasas una variable que ha de ser númerica. Si el nif está bien escrito te devolverá "true" y si no "false". Si no quieres usar clases y quieres probar directamente en probar si funciona puedes meter el código que está dentro de la función directamente en el código de la página (totalmente desaconsejado para cualquier página en producción), justo antes de enviar los datos a la base de datos.

    Intenta hacer alguna prueba con estas cosas que te digo, anuque si estás muy verde en JavaScript te recomiendo que empiezes por algo un poco más básico como es hacer una archivo, por ejemplo, "validaciones.js" en el que tu crees alguna validación para usarla en la página antes de meterte con el plugin de jQuery. Las validaciones PHP son muy importantes por lo que estas si que las tienes que dominar si no quieres que cualquier intruso te meta codigo no deseado en tu base de datos.

    Pegate un poco con esto.. y animo que es una parte muy amena y que, además de ser básico para la seguridad de tu página, se pueden hacer cosas muy chulas!!

    ResponderEliminar
  5. Hola!

    Gracias por contestar tan rapido :)!

    He mirado el script validate.js y he estado curioseando el codigo de las validaciones y ya se como y donde meter la validacion del DNI :).

    Es cierto que tengo que meterle caña al "scripting" tanto sea en la parte cliente(js o ajax) como parte servidor(php), voy haciendo el trabajo y al mismo tiempo voy documentandome, es mucho lo que hay que controlar en el mundo del desarrollo web, buf! Pero no desespero, se que el camino es largo pero bonito :D.

    Muchas gracias por ayudarme!!!

    Un saludo!! :D

    ResponderEliminar
  6. Pues.. hoy me pillaste en buena hora para contestarte!! ggg

    Pues... si, pegate con ese plugin que la verdad que está muy guapo y con todo lo de las validaciones.

    El problema que tiene este mundo es que cuanto más sabes, tienes la sensación de que te quedan muchas más cosas por aprender, pero te sientes realizado cuando consigues que algo funcione, y sobre todo si funciona bien!!

    Mucha suerte en tus andanzas y... animo!!!

    ResponderEliminar
  7. Muy bueno, muchas gracias estoy realizando actualmente un proyecto y me ha venido como anillo al dedo meterle al plugin la validacion del nif
    ¡¡GRACIASSSSS!!

    ResponderEliminar
  8. Gracias a tí por tu comentario. La verdad que comentarios así nos dan ánimos para seguir trabajando en esta línea.

    ResponderEliminar
  9. Gracias por este trocito de código compartido. Me ha servido de mucho. Te deseo una próspera y larga vida.

    ResponderEliminar
  10. Aquí una versión que valida También NIes que comienzan por X, Y y Z.

    El addMethod es par poder ponerlo ya dentro del html sin necesidad de tocar el jquery.validate.js
    {

    http://pastebin.com/WEvd9P7H

    ResponderEliminar
  11. Muchas gracias por tu aportación.

    Esta función es un perfecto complemente para el validate de jquery.

    Un saludo

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Exportar archivo de configuración de WinSCP

S i estamos trabajando con WinSCP seguro que ya hemos guardado distintas sesiones para acceder a ellas directamente en futuras ocasiones y evitar volver a introducir todos los parámetro de configuración. Seguro que también muchos de vosotros habéis agrupado las sesiones en carpetas dependiendo de la naturaleza de las mismas. Este trabajo ocupa un valioso tiempo que no nos podemos permitir repetirlo para todos los equipos que tenemos, por lo que lo más lógico es configurar todas las sesiones y exportar su configuración al resto de equipos , teniendo una sola versión y evitarnos tener que volver a configurar todas las sesiones en cada uno. El problema es que WinSCP no nos muestra la opción de exportar de una forma sencilla, por lo que tendremos que buscarnos la vida. Lo primero que debemos hacer es abrir el programa y acceder a Preferencias -> Almacenamiento (o su equivalente al inglés) En esta pantalla deberemos indicar que almacene la configuración en un archivo

Asignar valores por defecto a input=”file” y a textarea

S eguro que muchos os habéis estado rompiendo la cabeza buscando la forma de dar un valor por defecto a el tipo de dato input=”file” . Pues que sepáis que no se puede!!! No se puede dar un valor por defecto a los campos de este tipo, ya que hacen referencia a una ruta física local y podrían surgir problemas de seguridad. Lo que se puede hacer, por ejemplo, es mostrar la imagen o el nombre del dato que tenemos almacenado y si el usuario desea modificarla, ofrecerle la opción de cargar una nueva. La etiqueta textarea , aunque pueda parecérnoslo, no se trata de un input y para darle valor por defecto simplemente debemos mostrar el texto que deseemos entre su marca de apertura y de cierre. Es decir, en caso de que lo que deseemos mostrar por defecto sea una variable, introduciremos el siguiente código: <textarea id="txtobservaciones" name="txtobservaciones" rows="2" cols="40" class="txt" ><?=$_POST["txtobservaciones"] ?&

Configuración de archivo de Logs para IpTables

I pTables se usa para configurar, mantener e inspeccionar las tablas de reglas de filtrado de IPs en el kernel de Linux, pero por defecto, su sistema de logs no es todo lo completo esperamos. Por defecto, la mayoría de los logs del sistema se guardan en el fichero /var/log/messages pero en este caso vamos a configurar un nuevo fichero para que almacene únicamente los logs que generaremos con algunas reglas en IpTables , creando así su propio archivo de bitácora . Lo primero que debemos hacer es configurar el archivo /etc/syslog.conf , que se trata de un archivo de configuración en el que se indica el modo en que los mensajes del sistema son bitacorizados a través de la utilidad syslogd que se instala y configura por defecto en todos los sistemas GNU/Linux . Debemos añadir al final del fichero la siguiente sentencia: kern.warning /var/log/iptables.log Con esto indicamos que se almacenen los mensajes provienen del kernel con prioridad 4 o superior ('warning' es el nivel de