Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/08/2012, 14:50
vindt89
 
Fecha de Ingreso: febrero-2012
Mensajes: 49
Antigüedad: 12 años, 10 meses
Puntos: 2
Pregunta Form de Inscripción - Varios errores - Me vuelvo loco!

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($resultMYSQLI_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)<|| 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&aacute; en uso.</li>";
        }
        
//Validar password.
        
if(strlen($pass1)<|| strlen($pass1)>16){
            
$errores.="<li>La contrase&ntilde;a debe tener al menos 8 caracteres y m&aximo 16.</li>";
        }elseif(
$pass1!=$pass2){
            
$errores.="<li>Las contrase&ntilde;as deben coincidir.</li>";
        }elseif(!
preg_match($pat_alfanumerico,$pass1)){
            
$errores.="<li>La contrase&ntilde;a solo admite letras y numeros.</li>";
        }elseif(
substr_count($pass1,$pat_mayusculas)==0){
            
$errores.="<li>La contrase&ntilde;a debe contener al menos una mayuscula.</li>";
        }elseif(
substr_count($pass1,$pat_numerico)==0) {
            
$errores.="<li>La contrase&ntilde;a debe contener al menos un digito.</li>";
        }elseif(
substr_count($pass1,$pat_minusculas)==0) {
            
$errores.="<li>La contrase&ntilde;a debe contener al menos una minuscula.</li>";
        }elseif(
substr_count($pass1,$pat_space)>0){
            
$errores.="<li>La contras&ntilde;a no admite espacios en blanco.</li>";
        }
        
//Validar Nombre.
        
if(strlen($nombre)<2) {
            
$errores.="<li>Ingrese un nombre v&aacute;lido.</li>";
        }elseif(
strlen($nombre)>30) {
            
$errores.="<li>El Nombre ingresado es extenso, rec&oacute;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&aacute;lido.</li>";
        }elseif(
strlen($apellido)>60) {
            
$errores.="<li>El Apellido ingresado es extenso, rec&oacute;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&aacute;lida</li>";
        }elseif(
$mes=="2") {
            if(
$dia >= 29) {
                
$errores.="<li>Febrero no puede tener m&aacute;s de 28 d&iacute;as.</li>";
            }
        }elseif(
$dia>31){
            
$errores.="<li>Debe ingresar un d&iacute;a v&aacute;lido.</li>";
        }elseif(!
is_numeric($mes)){
            
$errores.="<li>Ingrese una fecha v&aacute;lida</li>";
        }elseif(
$mes>12) {
            
$errores.="<li>Debe ingresar un mes v&aacute;lido</li>";
        }elseif(!
is_numeric($anio)){
            
$errores.="<li>Ingrese una fecha v&aacute;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&ntilde;o v&aacute;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&iacute;s v&aacute;lido.</li>";
        }
        
        
//Validar email.
        
if(substr_count($email,"@") != 1) {
            
$errores.="<li>Ingrese un mail v&aacute;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&aacute;lido.</li>";
            }elseif(
strlen($cuenta)<3) {
                
$errores.="<li>Ingrese un mail v&aacute;lido.</li>";
            }
            if(!
preg_match($pat_alfanumerico_simbolo,$dominio)) {
                
$errores.="<li>Ingrese un mail v&aacute;lido.</li>";
            }elseif(
strlen($dominio)<3) {
                
$errores.="<li>Ingrese un mail v&aacute;lido.</li>";
            }elseif(
substr_count($dominio,".")<|| substr_count($dominio,".")>3) {
                
$errores.="<li>Ingrese un mail v&aacute;lido.</li>";
            }
        }
        
        
//Validar codigo antibot.
        
if($session_verify != $posted_verify) {
            
$errores .= "<li>El c&oacute;digo de verificaci&oacute;n es incorrecto.</li>";
        }
        
    }
    if(
$errores != '') {
            echo 
'<div class="error_message"><span class="error_txt">Atenci&oacute;n! Corrige los errores y volv&eacute; 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!
__________________
@vindt89