Foros del Web » Programando para Internet » PHP »

If anidados no funcionan..

Estas en el tema de If anidados no funcionan.. en el foro de PHP en Foros del Web. Hola, gracias por su ayuda.. en mi sitio tengo la página de registro, que te manda a una página donde éste se procesa.. el asunto ...
  #1 (permalink)  
Antiguo 17/02/2012, 15:21
 
Fecha de Ingreso: septiembre-2011
Ubicación: La Plata, Buenos Aires
Mensajes: 26
Antigüedad: 12 años, 7 meses
Puntos: 0
If anidados no funcionan..

Hola, gracias por su ayuda..

en mi sitio tengo la página de registro, que te manda a una página donde éste se procesa..
el asunto es que en un IF la secuencia de condicionales anidados deja de funcionar y no encuentro el porqué.
El error comienza en la línea 98 y lo marqué en un comentario en el código
Código PHP:
Ver original
  1. <?
  2.  
  3. $nombre = mysql_real_escape_string(strip_tags($_POST['nombre']));
  4. $apellido = mysql_real_escape_string(strip_tags($_POST['apellido']));
  5. $genero = mysql_real_escape_string(strip_tags($_POST['genero']));
  6. $pais = mysql_real_escape_string(strip_tags($_POST['pais']));
  7. $email = mysql_real_escape_string(strip_tags($_POST['email']));
  8. $usuario = mysql_real_escape_string(strip_tags($_POST['usuario']));
  9. $pass = mysql_real_escape_string(strip_tags($_POST['pass']));
  10. $inicio = date("Y-m-d");
  11. $nivel = "1";
  12. $password = md5($pass);
  13. $dian = mysql_real_escape_string(strip_tags($_POST['dia']));
  14. $mesn = mysql_real_escape_string(strip_tags($_POST['mes']));
  15. $anon = mysql_real_escape_string(strip_tags($_POST['ano']));
  16. $fecha = "$anon-$mesn-$dian";
  17.  
  18.         function comprobar_email($email){
  19.     $mail_correcto = 0;
  20.     //compruebo unas cosas primeras
  21.     if ((strlen($email) >= 6) && (substr_count($email,"@") == 1) && (substr($email,0,1) != "@") && (substr($email,strlen($email)-1,1) != "@")){
  22.          if ((!strstr($email,"'")) && (!strstr($email,"\"")) && (!strstr($email,"\\")) && (!strstr($email,"\$")) && (!strstr($email," "))) {
  23.              //miro si tiene caracter .
  24.              if (substr_count($email,".")>= 1){
  25.                  //obtengo la terminacion del dominio
  26.                  $term_dom = substr(strrchr ($email, '.'),1);
  27.                  //compruebo que la terminación del dominio sea correcta
  28.                  if (strlen($term_dom)>1 && strlen($term_dom)<5 && (!strstr($term_dom,"@")) ){
  29.                  //compruebo que lo de antes del dominio sea correcto
  30.                  $antes_dom = substr($email,0,strlen($email) - strlen($term_dom) - 1);
  31.                  $caracter_ult = substr($antes_dom,strlen($antes_dom)-1,1);
  32.                  if ($caracter_ult != "@" && $caracter_ult != "."){
  33.                      $mail_correcto = 1;
  34.                  }
  35.                  }
  36.              }
  37.          }
  38.     }
  39. function edad($edad){
  40. list($anio,$mes,$dia) = explode("-",$edad);
  41. $anio_dif = date("Y") - $anio;
  42. $mes_dif = date("m") - $mes;
  43. $dia_dif = date("d") - $dia;
  44. if ($dia_dif < 0 || $mes_dif < 0)
  45. $anio_dif--;
  46. return $anio_dif;
  47. }
  48.  
  49.  
  50. if($nombre = "" || $apellido = "" || $nacimiento = "" || $genero = "" || $pais = "" || $email = "" || $usuario = "" || $pass = "")
  51. {
  52.     echo"Disculpa, pero al parecer has accedido aquí de forma inesperada y no podemos procesar tu solicitud";
  53. }
  54. else
  55. {
  56.     $comprobarusuario = mysql_query("SELECT usuario FROM datosp WHERE usuario = '$usuario'",$conexion);
  57.     $filasusuario = mysql_num_rows($comprobarusuario);
  58.     if($filasusuario == "1")
  59.     {
  60.         echo"Disculpa, el nombre de usuario <b>$usuario <font color=red>no está disponible para su uso</font></b>, por favor haz clic <a href=registro-1.php>aquí</a> para volver a la página de registro.";
  61.     }
  62.     else
  63.     {
  64.         $comprobaremail = mysql_query("SELECT usuario FROM datosp WHERE email = '$email'",$conexion);
  65.         $filasemail = mysql_num_rows($comprobaremail);
  66.         if($filasemail == "1")
  67.         {
  68.             echo"Disculpa, pero ese e-mail ya está asociado a otra cuenta. Haz clic <a href=registro-1.php>aquí</a> para regresar.";
  69.         }
  70.         else
  71.         {
  72.             function CalcularEdad($fecha){
  73.                 list($dia,$mes,$anio) = explode("/",$fecha);
  74.                 $anio_dif = date("Y") - $anio;
  75.                 $mes_dif = date("m") - $mes;
  76.                 $dia_dif = date("d") - $dia;
  77.                 if($dia_dif < 0 || $mes_dif < 0)
  78.                 $anio_dif--;
  79.                 return $anio_dif;
  80.             }
  81.            
  82.  
  83.         $edad = edad("$fecha");
  84.         if($edad < 13)
  85.         {
  86.        
  87.             echo"<b>Disculpa, pero sólo las personas mayores a 13 años pueden registrarse en el sitio.</b>";
  88.         }
  89.         else
  90.         {
  91.             if($genero != "M" xor $genero != "F")
  92.             {
  93.                
  94.                 echo"Disculpa, ocurrió un error. Inténta completar el formulario nuevamente haciendo clic <a href=registro-2.php>aquí</a>";
  95.             }
  96.             else
  97.             {
  98.                 //AQUI ES EL PROBLEMA
  99.                 echo"ESTO NO SE IMPRIME";
  100.  
  101.     if($mail_correcto == "0")
  102.     {
  103.         echo" Disculpa, pero la dirección de correo electrónico que ingresaste no es correcta, por favor, <a href=registro-1.php>vuelve atrás</a> e ingrésala nuevamente ";
  104.     }
  105.     else
  106.     {
  107.         function comprobar_nombre_usuario($nombre_usuario){
  108.    //compruebo que el tamaño del string sea válido.
  109.    if (strlen($nombre_usuario)<3 || strlen($nombre_usuario)>20){
  110.       $verificarusuario = "0";
  111.       return false;
  112.    }
  113.  
  114.    //compruebo que los caracteres sean los permitidos
  115.    $permitidos = "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ0123456789-_.";
  116.    for ($i=0; $i<strlen($nombre_usuario); $i++){
  117.       if (strpos($permitidos, substr($nombre_usuario,$i,1))===false){
  118.        $verificarusuario = "0";
  119.          return false;
  120.       }
  121.    }
  122.    $verificarusuario ="1";
  123.    return true;
  124. }
  125.  
  126.  comprobar_nombre_usuario($usuario);
  127.  if($verificarusuario == "0")
  128.  {
  129.      echo"<b>¡Tu usuario tiene que contener entre 3 y 20 caracteres que deben ser: <font color=red>letras de la 'a' a la 'z' (inclusive mayúsculas), guión (-), guión bajo (_) y punto (.)!</b></font>. Haz clic <a href=registro-1.php>aquí</a> para volver.";
  130.  }
  131.     else
  132.     {
  133.         function comprobarpass($contrasena){
  134.    //compruebo que el tamaño del string sea válido.
  135.    if (strlen($nombre_usuario)<3 || strlen($nombre_usuario)>13){
  136.       $verificarc = "0";
  137.       return false;
  138.    }
  139.    else
  140.    {
  141.        $verificarc = "1";
  142.    }
  143.         }
  144.         comprobarpass($pass);
  145.         if($verificarc == "0")
  146.         {
  147.             echo"Tu contraseña debe tener entre 3 y 13 caracteres, por favor haz clic <a href=registro-1.php> aquí </a> para volver.";
  148.         }
  149.         else
  150.         {
  151.             function cambiaf_a_mysql($fecha){
  152.     ereg("([0-9]{1,2})/([0-9]{1,2})/([0-9]{2,4})", $fecha, $mifecha);
  153.     $lafecha=$mifecha[3]."-".$mifecha[2]."-".$mifecha[1];
  154.     return $lafecha;
  155. }
  156.  
  157. $nuevafecha = cambiarf_a_mysql($fecha);
  158.  
  159.             $consultar = mysql_query("INSERT INTO datosp (nombre,apellido,genero,nacimiento,email,nacionalidad,usuario,pass,inicio,nivel) VALUES ('$nombre','$apellido','$genero','$nuevafecha','$email','$pais','$usuario','$password','$inicio','$nivel')",$conexion);
  160.            
  161.             if($consultar)
  162.             {
  163.                 echo" <B><font COLOR=GREEN>¡Se te ha registrado con éxito!<br> <a href=log-1.php>Haz clic aquí para iniciar sesión</a></FONT></b>";
  164.             }}}}}}}}}}
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  ?>

Gracias por su ayuda
  #2 (permalink)  
Antiguo 17/02/2012, 15:23
 
Fecha de Ingreso: mayo-2010
Mensajes: 10
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: If anidados no funcionan..

en la linea 100 te falta la llave de cierre (}) del else
  #3 (permalink)  
Antiguo 17/02/2012, 15:28
 
Fecha de Ingreso: septiembre-2011
Ubicación: La Plata, Buenos Aires
Mensajes: 26
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: If anidados no funcionan..

Cita:
Iniciado por gaston1985 Ver Mensaje
en la linea 100 te falta la llave de cierre (}) del else
Gastón, no, no es así, porque lo que sigue debe funcionar sólo si lo anterior es correcto.. un saludo.
  #4 (permalink)  
Antiguo 17/02/2012, 15:37
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: If anidados no funcionan..

Tienes que revisar este condicional:

Código PHP:
Ver original
  1. if($genero != "M" xor $genero != "F")

Que posibles valores tiene $genero? Sólo va a llegar a else si $genero es diferente a M o F.

Revisa eso. Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #5 (permalink)  
Antiguo 17/02/2012, 15:38
 
Fecha de Ingreso: septiembre-2011
Ubicación: La Plata, Buenos Aires
Mensajes: 26
Antigüedad: 12 años, 7 meses
Puntos: 0
Hola andres, genero es un select con M y F pero supongo que algo andara mal ahi lo raro es que no salga el mensaje de error que se daria si genero es diferente a M o F
  #6 (permalink)  
Antiguo 17/02/2012, 15:45
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: If anidados no funcionan..

¿Cuál es el código de tu select? prueba haciendo un var_dump($genero) y selecciona algo diferente a M o F a ver que te sale.

Mínimo está llegando aquí?

Código PHP:
Ver original
  1. echo"Disculpa, ocurrió un error. Inténta completar el formulario nuevamente ...
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #7 (permalink)  
Antiguo 17/02/2012, 15:45
 
Fecha de Ingreso: septiembre-2011
Ubicación: La Plata, Buenos Aires
Mensajes: 26
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: If anidados no funcionan..

Acabo de darme cuenta que el error ocurre mucho antes.. veré que puedo hacer y si no puedo solucionarlo voy a recurrir a los foros..
  #8 (permalink)  
Antiguo 17/02/2012, 16:56
Avatar de lukas4  
Fecha de Ingreso: octubre-2008
Ubicación: frente al pc
Mensajes: 496
Antigüedad: 15 años, 6 meses
Puntos: 12
Respuesta: If anidados no funcionan..

porque mejor no creas tus funciones, y luego solo las mandas llamar? y de esa manera sera mas facil debugear el codigo para asi encontrar los errores
__________________
http://situcomo.blogspot.com
Karma is a Bitch... they said

Etiquetas: anidados, formulario, mysql, registro, sql, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:43.