I have a problem trying to validate input with preg_match and filter_var it does not validate me. I append the code to see what I'm failing.
<?php
include_once "conexion/conexion.php";
if(isset($_POST['guardar'])){
$nombresyapellidos = $_POST['nombresyapellidos'];
$email = $_POST['email'];
$user = $_POST['user'];
$pass = $_POST['pass'];
$pass2 = $_POST['pass2'];
if(strlen(trim($nombresyapellidos)) < 1 || strlen(trim($email)) < 1 || strlen(trim($user)) < 1 || strlen(trim($pass)) < 1 || strlen(trim($pass2)) < 1)
{
$errMSG = "¡ Ups Aviso: No pueden haber campos vacios. !";
}
else if($_POST['pass']!=$_POST['pass2'])
{
$errMSG = "¡ Ups Aviso: Las contraseñas deben coincidir. !";
}
else if(strlen($pass) < 8)
{
$errMSG = "¡ Ups Aviso: La contraseña debe tener al menos 6 caracteres. !";
}
else if(strlen($pass) > 16)
{
$errMSG = "¡ Ups Aviso: La contraseña no puede tener más de 16 caracteres. !";
}
else if (preg_match ("/^[a-z]+$/", $_POST['pass']))
{
$errMSG = "¡ Ups Aviso: La contraseña1 debe tener al menos una letra minúscula. !";
}
else if(preg_match("/^[A-Z]+$/", $_POST['pass']))
{
$errMSG = "¡ Ups Aviso: La contraseña2 debe tener al menos una letra mayúscula. !";
}
else if(preg_match("/^[0-9]+$/", $_POST['pass']))
{
$errMSG = "¡ Ups Aviso: La contraseña3 debe tener al menos un caracter numérico. !";
}
else if(preg_match("/^[\W]+$/", $_POST['pass']))
{
$errMSG = "¡ Ups Aviso: La contraseña4 debe tener al menos un caracter especial. !";
}
else if (filter_var(($_POST['email']), FILTER_VALIDATE_EMAIL))
{
$errMSG = "¡ Ups Aviso: Dirección de correo inválida. !";
}
else if(preg_match("/^[a-zA-Z ]+$/", $_POST['nombresyapellidos']))
{
$errMSG = "Este campo solo acepta letras.";
}
else{
//si no hay errores continuo