sábado, 2 de febrero de 2013

Validación de datos a través de patrones con PHP


hola, a continuación voy a poner una serie de patrones muy útiles para comprobar el valor de los campos  enviados, ya que antes de realizar cualquier acción sobre la base de datos es muy aconsejable verificar su contenido, dichos patrones serán los que establezcan si un dato tiene los caracteres permitidos o no, por ejemplo si a través de un campo de email, alguien envía un formato incorrecto mail@.malo la ejecución del script se detiene en ese punto antes de establecer cualquier acción con la base de datos.

Alfabeto español -> /^[a-zA-ZñÑáéíóúÁÉÍÓÚäëïöüÄËÏÖÜàèìòùÀÈÌÒÙ\s]+$/

Ejemplo de filtrado de datos con preg_match ...

$texto = "Canción";
$buscar= "/^[a-zA-ZñÑáéíóúÁÉÍÓÚäëïöüÄËÏÖÜàèìòùÀÈÌÒÙ\s]+$/";
if (!preg_match($buscar, $texto))
{
header("location: error.php");
return;
}
else
{
// Acciones correctas ...
}

A través de la sentencia if se comprueba con la función preg_match() que los datos introducidos siguen un patrón de lo contrario se redirige a la dirección indicada en header y se retorna.

Siguiendo el mismo proceso anterior se pueden filtrar otros tipos de datos como los siguientes ...

$numeros = "/^[0-9]+$/"; #para números, útil para filtrar los famosos ids.

$letras = "/^[a-zA-Z]+$/"; #sólo letras, pero esto no incluye los acentos, así que si introduces á no es correcto.

 $letras_latinas = "/^[a-zA-ZñÑáéíóúÁÉÍÓÚäëïöüÄËÏÖÜàèìòùÀÈÌÒÙ\s]+$/"; #para caracteres latinos(acentos) y espacios. el espacio se indica con \s.

$email = "/^[a-zA-Z0-9\._-]+@[a-zA-Z0-9-]{2,}[.][a-zA-Z]{2,4}$/"; #para emails, válidos pueden ser: miemail@gmail.com, mi.email@gmail.es, ...

$password = "/^([a-z]+[0-9]+)|([0-9]+[a-z]+)/i"; #passwords que tienen que contener tanto números como letras

$url = "/^(ht|f)tps?:\/\/\w+([\.\-\w]+)?\.([a-z]{2,6})?([\.\-\w\/_]+)$/i"; #Para urls

$localhost = "/^http:\/\/(localhost|127\.0\.0\.1)/"; #para localhost

$codigo_postal = "/^([1-9]{2}|[0-9][1-9]|[1-9][0-9])[0-9]{3}$/"; #Para códigos postales

$NIF = "/^\d{8}[a-zA-Z]{1}$/"; #Para el Documento NIF

$CIF = "/^[a-zA-Z]{1}\d{7}[a-zA-Z0-9]{1}$/"; #Para el Documento CIF

$NIE = "/^[XxTtYyZz]{1}[0-9]{7}[a-zA-Z]{1}$/"; #Para el documento NIE

$VISA = "/^4[0-9]{3}-?[0-9]{4}-?[0-9]{4}-?[0-9]{4}$/"; #Tarjetas de crédito VISA

$MASTERCARD = "/^5[1-5][0-9]{2}-?[0-9]{4}-?[0-9]{4}-?[0-9]{4}$/"; #Tarjetas de crédito MASTERCARD

$fecha = "/^([0-9]{2}\/[0-9]{2}\/[0-9]{4})$/"; #Fecha formato: 12/12/2014


No hay comentarios: