Foros del Web » Programando para Internet » PHP »

problema con registro de usuarios

Estas en el tema de problema con registro de usuarios en el foro de PHP en Foros del Web. Hola que tal, lo que pasa es que ando haciendo un formulario para registrar usuarios y lo estoy haciendo de esta maner @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código ...
  #1 (permalink)  
Antiguo 10/05/2012, 18:17
 
Fecha de Ingreso: agosto-2009
Mensajes: 292
Antigüedad: 14 años, 8 meses
Puntos: 5
problema con registro de usuarios

Hola que tal, lo que pasa es que ando haciendo un formulario para registrar usuarios y lo estoy haciendo de esta maner

Código PHP:
Ver original
  1. <?php
  2.  
  3. $username = $_POST['username'];
  4. $email = $_POST['email'];
  5. $pass = $_POST['pass'];
  6. $repass = $_POST['repass'];
  7.  
  8. if($_POST['submit'] == "register") {
  9.    
  10.     if(preg_match("/[^a-zA-Z0-9]/", $username)) {
  11.         $error['number/letters'] = '<div style="color: red;">Please use only letters (a-z), and numbers.</div>';
  12.     } else {
  13.         if(!empty($username)) {
  14.             if((strlen($username)) < 6 || (strlen($username)) > 18) {
  15.                 $error['min/max_c'] = '<div style="color: red;">Please use between 6 and 18 characters.</div>';
  16.             }
  17.         }
  18.     }
  19.    
  20.     if(!empty($email)) {
  21.         if(!preg_match("/^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)*\.([a-zA-Z]{2,6})/", $email)) {
  22.             $error['email'] = '<div style="color: red;">Enter your correct email address.</div>';
  23.         }
  24.     }
  25.    
  26.     if(!empty($pass)) {
  27.         if((strlen($pass)) < 6 || (strlen($pass)) > 18) {
  28.             $error['pass_min/max'] = '<div style="color: red;">Please use between 6 and 18 characters.</div>';
  29.         } else {
  30.             if(!empty($repass)) {
  31.                 if($pass != $repass) {
  32.                     $error['pass'] = '<div style="color: red;">These passwords don\'t match.</div>';
  33.                 }
  34.             }
  35.         }
  36.     }
  37.    
  38.        
  39. }
  40.  
  41. ?>

El problema es que no se como hacerle para que si no se produce ningún error se guarden los datos.

Saludos y gracias de antemano
  #2 (permalink)  
Antiguo 10/05/2012, 19:50
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: problema con registro de usuarios

o.O no se te ocurrió revisar si $error tiene items dentro...

Código PHP:
Ver original
  1. if (count($error) == 0) {
  2. echo 'No hay errores, a insertar!';
  3. }else {
  4. echo 'Errores:';
  5. foreach($error as $e) {
  6. echo $e;
  7. }
  8. }
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #3 (permalink)  
Antiguo 10/05/2012, 20:49
 
Fecha de Ingreso: agosto-2009
Mensajes: 292
Antigüedad: 14 años, 8 meses
Puntos: 5
Respuesta: problema con registro de usuarios

Cita:
Iniciado por Nemutagk Ver Mensaje
o.O no se te ocurrió revisar si $error tiene items dentro...

Código PHP:
Ver original
  1. if (count($error) == 0) {
  2. echo 'No hay errores, a insertar!';
  3. }else {
  4. echo 'Errores:';
  5. foreach($error as $e) {
  6. echo $e;
  7. }
  8. }
Hola que tal Nemutagk, gracias por responder.

Hace rato estuve tratando de hacerlo y lo hice de otras formas parecidas a la tuya pero de todas las formas que lo intente me encontré el mismo problema, lo que ocurre es que cuando mando el formulario sin llenar ningún campo me sale el echo 'No hay errores, a insertar!';

Saludos!
  #4 (permalink)  
Antiguo 10/05/2012, 20:56
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: problema con registro de usuarios

eso es cuestión de tus validaciones de los campos, no se si te has dado cuenta, pero todos los campos solo son validados si no están vacíos! por lo tanto si llegan vacíos no se validan, en tus if debes agregar un else donde agregas un error indicando que están vacíos...

Código PHP:
Ver original
  1. if(!empty($email)) {
  2.         if(!preg_match("/^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)*\.([a-zA-Z]{2,6})/", $email)) {
  3.             $error['email'] = '<div style="color: red;">Enter your correct email address.</div>';
  4.         }
  5.     }else {
  6.         $error['email'] = '<div style="color: red;">Is necessary to indicate an email address.</div>';
  7.     }
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #5 (permalink)  
Antiguo 10/05/2012, 21:36
 
Fecha de Ingreso: agosto-2009
Mensajes: 292
Antigüedad: 14 años, 8 meses
Puntos: 5
Respuesta: problema con registro de usuarios

Cita:
Iniciado por Nemutagk Ver Mensaje
eso es cuestión de tus validaciones de los campos, no se si te has dado cuenta, pero todos los campos solo son validados si no están vacíos! por lo tanto si llegan vacíos no se validan, en tus if debes agregar un else donde agregas un error indicando que están vacíos...

Código PHP:
Ver original
  1. if(!empty($email)) {
  2.         if(!preg_match("/^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)*\.([a-zA-Z]{2,6})/", $email)) {
  3.             $error['email'] = '<div style="color: red;">Enter your correct email address.</div>';
  4.         }
  5.     }else {
  6.         $error['email'] = '<div style="color: red;">Is necessary to indicate an email address.</div>';
  7.     }
Se me olvido agregar la otra parte de mi formulario que se procesa en la misma pagina

Código HTML:
Ver original
  1. <form method="post" action="register.php" enctype="multipart/form-data">
  2.  
  3. <div class="panel">
  4. <h2>Choose a username:</h2>
  5. <input type="text" class="inputtext" autocomplete="off" name="username">
  6. <?php if(empty($_POST['username']) && isset($_POST['username'])) { echo '<div style="color: red;">You can\'t leave this empty.</div>'; } ?>
  7. <?=$error['user_exist']?>
  8. <?=$error['min/max_c']?>
  9. <?=$error['number/letters']?>
  10. </div>
  11.  
  12. <div class="panel">
  13. <h2>Your current email address:</h2>
  14. <input type="text" class="inputtext" autocomplete="off" name="email">
  15. <?php if(empty($_POST['email']) && isset($_POST['email'])) { echo '<div style="color: red;">You can\'t leave this empty.</div>'; } ?>
  16. <?=$error['email']?>
  17. <?=$error['email_exist']?>
  18. </div>
  19.  
  20. <div class="panel">
  21. <h2>Choose a password:</h2>
  22. <input type="password" class="inputtext" name="pass">
  23. <?php if(empty($_POST['pass']) && isset($_POST['repass'])) { echo '<div style="color: red;">You can\'t leave this empty.</div>'; } ?>
  24. <?=$error['pass_min/max']?>
  25. </div>
  26.  
  27. <div class="panel">
  28. <h2>Re-enter password:</h2>
  29. <input type="password" class="inputtext" name="repass">
  30. <?php if(empty($_POST['repass']) && isset($_POST['repass'])) { echo '<div style="color: red;">You can\'t leave this empty.</div>'; } ?>
  31. <?=$error['pass']?>
  32. </div>
  33.  
  34. <div class="panel_upload">
  35. <input id="b-submit" type="submit" name="submit" value="register">
  36. </div>
  37.  
  38. </form>
  #6 (permalink)  
Antiguo 10/05/2012, 21:44
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: problema con registro de usuarios

o.O sin ofender, pero, realmente has comprendido las validaciones que haces en el primer script publicado y las que haces en el segundo script?... para que quede claro...en tu código del formulario (el segundo código publicado) validas si esta vacío el campo, PERO NO GUARDAS EL ERROR, solo imprimes el mensaje, por lo tanto es NO ES UNA VALIDACION, y por lo cual al verificar el array $error no encuentra dichos errores por lo tanto el script da por valido los datos enviados aun cuando estos no existan....
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #7 (permalink)  
Antiguo 10/05/2012, 21:54
 
Fecha de Ingreso: agosto-2009
Mensajes: 292
Antigüedad: 14 años, 8 meses
Puntos: 5
Respuesta: problema con registro de usuarios

Cita:
Iniciado por Nemutagk Ver Mensaje
o.O sin ofender, pero, realmente has comprendido las validaciones que haces en el primer script publicado y las que haces en el segundo script?... para que quede claro...en tu código del formulario (el segundo código publicado) validas si esta vacío el campo, PERO NO GUARDAS EL ERROR, solo imprimes el mensaje, por lo tanto es NO ES UNA VALIDACION, y por lo cual al verificar el array $error no encuentra dichos errores por lo tanto el script da por valido los datos enviados aun cuando estos no existan....
Ok muchas gracias ya entendí el problema, ahorita lo arreglo y comento. Muchas gracias.

Saludos!
  #8 (permalink)  
Antiguo 10/05/2012, 22:36
 
Fecha de Ingreso: agosto-2009
Mensajes: 292
Antigüedad: 14 años, 8 meses
Puntos: 5
Respuesta: problema con registro de usuarios

Bueno muchas gracias por todo Nemutagk, aquí esta el código corregido por si alguien lo quiere utilizar, no se si sea la forma correcta de hacerlo y si alguien tiene una sugerencia para mejorarlo sera bien recibida.

Código PHP:
Ver original
  1. <?php
  2.  
  3. $username = $_POST['username'];
  4. $email = $_POST['email'];
  5. $pass = $_POST['pass'];
  6. $repass = $_POST['repass'];
  7.  
  8. if($_POST['submit'] == "register") {
  9.    
  10.     if(preg_match("/[^a-zA-Z0-9]/", $username)) {
  11.         $error['number/letters'] = '<div style="color: red;">Please use only letters (a-z), and numbers.</div>';
  12.     } else {
  13.         if(!empty($username)) {
  14.             if((strlen($username)) < 6 || (strlen($username)) > 18) {
  15.                 $error['min/max_c'] = '<div style="color: red;">Please use between 6 and 18 characters.</div>';
  16.             }
  17.         } else {
  18.             $error['username_null'] = '<div style="color: red;">You can\'t leave this empty.</div>';
  19.         }
  20.     }
  21.    
  22.     if(!empty($email)) {
  23.         if(!preg_match("/^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)*\.([a-zA-Z]{2,6})/", $email)) {
  24.             $error['email'] = '<div style="color: red;">Enter your correct email address.</div>';
  25.         }
  26.     } else {
  27.         $error['email_null'] = '<div style="color: red;">You can\'t leave this empty.</div>';
  28.     }
  29.    
  30.     if(!empty($pass)) {
  31.         if((strlen($pass)) < 6 || (strlen($pass)) > 18) {
  32.             $error['pass_min/max'] = '<div style="color: red;">Please use between 6 and 18 characters.</div>';
  33.         }
  34.     } else {
  35.         $error['pass_null'] = '<div style="color: red;">You can\'t leave this empty.</div>';
  36.     }
  37.    
  38.     if(empty($repass)) {
  39.         $error['repass_null'] = '<div style="color: red;">You can\'t leave this empty.</div>';
  40.     } else {
  41.         if($pass != $repass) {
  42.             $error['pass'] = '<div style="color: red;">These passwords don\'t match.</div>';
  43.         }
  44.     }
  45.  
  46.     if(count($error) == 0) {
  47.         echo "no hay errores :)";
  48.     }
  49.        
  50. }
  51.  
  52. ?>

Saludos!

Etiquetas: formulario, registro, 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 01:36.