Hola gente como va?
En esta oportunidad les comento que estoy haciendo un form de inscripción y me estoy volviendo loco, para mi son las expresiones regulares, pero fijense porq no le encuentro la vuelta...
Código reg.php.
Código PHP:
<?php
if (!isset($_SESSION)) session_start();
if(!$_POST) exit;
if (!defined("PHP_EOL")) define("PHP_EOL", "\r\n");
include ("inc/const.php"); //Solo tiene conexión al servidor.
include ("inc/func.php"); // Solo las funciones de seguridad.
//Variables
$usuario = filterXSS(MakeMeSafe($_POST['usuario']));
$pass1 = filterXSS(MakeMeSafe($_POST['pass1']));
$pass2 = filterXSS(MakeMeSafe($_POST['pass2']));
$nombre = filterXSS(MakeMeSafe($_POST['name']));
$apellido = filterXSS(MakeMeSafe($_POST['apellido']));
$sexo = filterXSS(MakeMeSafe($_POST['sexo']));
$dia = filterXSS(MakeMeSafe($_POST['dia']));
$mes = filterXSS(MakeMeSafe($_POST['mes']));
$anio = filterXSS(MakeMeSafe($_POST['anio']));
$pais = filterXSS(MakeMeSafe($_POST['country']));
$email = filterXSS(MakeMeSafe($_POST['email']));
//Verificacion del codigo de seguridad
if (isset($_POST['verify'])) :
$posted_verify = $_POST['verify'];
$posted_verify = md5($posted_verify);
else :
$posted_verify = '';
endif;
$session_verify = $_SESSION['verify'];
if (empty($session_verify)) $session_verify = $_COOKIE['verify'];
//validacion de campos.
//Patrones de validacion. PARA MI DONDE ESTA EL PROBLEMA!
$pat_space="/^[[:space:]]+$/";
$pat_letras="/^[a-zA-Z]+$/";
$pat_minusculas="/^[a-z]/";
$pat_mayusculas="/^[A-Z]/";
$pat_numerico="1234567890";
$pat_alfanumerico="/^[a-zA-Z0-9]/";
$pat_alfanumerico_min="/^[a-z0-9]/";
$pat_alfanumerico_simbolo="/^[a-zA-Z0-9\d._-]/";
$pat_fecha=date('Y');
$pat_pais=array("arg","bol","bra","chi","col","ecu","esp","mex","par","per","por","uru","usa","ven");
//Inicializacion del conteiner errores.
$errores='';
//Consulta a la base de datos por datos duplicados.
$link = mysqli_connect(SERVER,USER,PASSWORD,USRM);
$query = "SELECT usuario FROM usuarios WHERE usuario = '$usuario' AND email = '$email'";
$result = mysqli_query($link, $query);
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
// VALIDACIONES
if(empty($usuario) || empty($pass1) || empty($pass2) || empty($nombre) || empty($apellido) || empty($sexo) || empty($dia) || empty($mes) || empty($anio) || empty($pais) || empty($email)){
$errores.= "<li>Todos los campos son obligatorios.</li>";
}else {
//Validar usuario.
if(strlen($usuario)<6 || strlen($usuario)>12){//longitud del usuario
$errores.="<li>El usuario debe ser de al menos 6 caracteres y maximo 12.</li>";
}elseif(preg_match($pat_space,$usuario)){
$errores.="<li>El usuario no puede contener espacios en blanco.</li>";
}elseif(!preg_match($pat_alfanumerico_min,$usuario)){
$errores.="<li>El usuario solo puede contener letras y numeros.</li>";
}elseif(preg_match($pat_mayusculas,$usuario)){
$errores.="<li>El usuario solo puede componerse de minusculas.</li>";
}elseif($row['usuario']==$usuario) { //disponibilidad de usuario
$errores .= "<li>El usuario está en uso.</li>";
}
//Validar password.
if(strlen($pass1)<8 || strlen($pass1)>16){
$errores.="<li>La contraseña debe tener al menos 8 caracteres y m&aximo 16.</li>";
}elseif($pass1!=$pass2){
$errores.="<li>Las contraseñas deben coincidir.</li>";
}elseif(!preg_match($pat_alfanumerico,$pass1)){
$errores.="<li>La contraseña solo admite letras y numeros.</li>";
}elseif(substr_count($pass1,$pat_mayusculas)==0){
$errores.="<li>La contraseña debe contener al menos una mayuscula.</li>";
}elseif(substr_count($pass1,$pat_numerico)==0) {
$errores.="<li>La contraseña debe contener al menos un digito.</li>";
}elseif(substr_count($pass1,$pat_minusculas)==0) {
$errores.="<li>La contraseña debe contener al menos una minuscula.</li>";
}elseif(substr_count($pass1,$pat_space)>0){
$errores.="<li>La contrasña no admite espacios en blanco.</li>";
}
//Validar Nombre.
if(strlen($nombre)<2) {
$errores.="<li>Ingrese un nombre válido.</li>";
}elseif(strlen($nombre)>30) {
$errores.="<li>El Nombre ingresado es extenso, recórtelo.</li>";
}elseif(!preg_match($pat_letras,$nombre)) {
$errores.="<li>El Nombre solo admite letras y espacion.</li>";
}
//Validar Apellido.
if(strlen($apellido)<2) {
$errores.="<li>Ingrese un Apellido válido.</li>";
}elseif(strlen($apellido)>60) {
$errores.="<li>El Apellido ingresado es extenso, recórtelo.</li>";
}elseif(!preg_match($pat_letras,$apellido)) {
$errores.="<li>El Apellido solo admite letras y espacion.</li>";
}
//Validar fecha de nacimiento.
if(!is_numeric($dia)){
$errores.="<li>Ingrese una fecha válida</li>";
}elseif($mes=="2") {
if($dia >= 29) {
$errores.="<li>Febrero no puede tener más de 28 días.</li>";
}
}elseif($dia>31){
$errores.="<li>Debe ingresar un día válido.</li>";
}elseif(!is_numeric($mes)){
$errores.="<li>Ingrese una fecha válida</li>";
}elseif($mes>12) {
$errores.="<li>Debe ingresar un mes válido</li>";
}elseif(!is_numeric($anio)){
$errores.="<li>Ingrese una fecha válida</li>";
}elseif(($pat_fecha-$anio)<=11) {
$errores.="<li>El usuario no puede tener menos de 12 años</li>";
}elseif(($pat_fecha-$anio)>100) {
$errores.="<li>Ingrese un año válido.</li>";
}
//Validar nacionalidad.
if($pais=="none") {
$errores.="<li>Debe ingresar nacionalidad.</li>";
}elseif(!in_array($pais,$pat_pais)) {
$errores.="<li>Debe ingresar un país válido.</li>";
}
//Validar email.
if(substr_count($email,"@") != 1) {
$errores.="<li>Ingrese un mail válido.</li>";
}else {
$mailarray=explode("@",$email);
$cuenta=$mailarray[0];
$dominio=$mailarray[1];
if(!preg_match($pat_alfanumerico_simbolo,$cuenta)) {
$errores.="<li>Ingrese un mail válido.</li>";
}elseif(strlen($cuenta)<3) {
$errores.="<li>Ingrese un mail válido.</li>";
}
if(!preg_match($pat_alfanumerico_simbolo,$dominio)) {
$errores.="<li>Ingrese un mail válido.</li>";
}elseif(strlen($dominio)<3) {
$errores.="<li>Ingrese un mail válido.</li>";
}elseif(substr_count($dominio,".")<1 || substr_count($dominio,".")>3) {
$errores.="<li>Ingrese un mail válido.</li>";
}
}
//Validar codigo antibot.
if($session_verify != $posted_verify) {
$errores .= "<li>El código de verificación es incorrecto.</li>";
}
}
if($errores != '') {
echo '<div class="error_message"><span class="error_txt">Atención! Corrige los errores y volvé a intentarlo.</span>';
echo '<ul class="error_messages">' . $errores . '</ul>';
echo '</div>';
}else { //Succes!
//Todavia no lo arme.
}
?>
Bueno espero me puedan ayudar, la verdad me estoy volviendo loco!
Da error al validar la password, me dice todo el tiempo que no tiene ninguna mayuscula, cuando inhabilito esta verificacion, me dice lo mismo del digito y lo mismo con minusculas...
si le pongo un espacio en los campos apellido y nombre también da error indicando que no son validos.
Si le pongo un espacio en el usuario no me tira error...
AYUDA!