Foros del Web » Programando para Internet » PHP »

AYUDA como restringir caracteres en un registro

Estas en el tema de AYUDA como restringir caracteres en un registro en el foro de PHP en Foros del Web. ¿Quieres validar el nombre de usuario al hacer la consulta, o al devolver el dato de la BD? Supongo que es la primera, y sería ...

  #31 (permalink)  
Antiguo 17/03/2010, 06:39
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: AYUDA como restringir caracteres en un registro

¿Quieres validar el nombre de usuario al hacer la consulta, o al devolver el dato de la BD? Supongo que es la primera, y sería algo así :

Código PHP:
Ver original
  1. if(!preg_match("/^[a-zA-Z0-9áéíóúàèìòùÁÉÍÓÚÀÈÌÒÙÑñ\s]{2,30}+$/", $login_usuario)) {
  2.      echo "Nombre de usuario inválido";
  3. } else {
  4.     $sql="SELECT id FROM usuarios_datos WHERE login = '$login_usuario'";
  5.     $result = mysql_query($sql);
  6.     if($row_usuario = mysql_fetch_array($result)){
  7.         $error_login = "Ya se encuentra un usuario registrado con ese login.<br>Intenta otra vez!<br>";
  8.         print_r($row_usuario);
  9.         $todo_ok = 1;
  10.     }
  11. }
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #32 (permalink)  
Antiguo 17/03/2010, 06:48
(Desactivado)
 
Fecha de Ingreso: marzo-2010
Mensajes: 40
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: AYUDA como restringir caracteres en un registro

ok, el problema que tengo es que el print_r me da problemas, parece que cuando el usuario existe todo funciona bien y da el error correspondiente pero en la parte visible de la web se rompe y sale un código (Estilo los errores apache) que pone "Array ([0]=>4 [id]=.....", y si borro el print_r todo funciona bien pero desaparece ese error. Puedes decirme la función que ese print_r tiene en mi código y que pasa si lo quito.

Te pongo el código tal cual.

Código PHP:
Ver original
  1. <?
  2. include("...");
  3. mbanner($titulo_sitio,$nombre_usuario_session,$apellido_usuario_session,$usuario_usuario_session);
  4. $incluir = "";
  5. if($procesa == "si"){
  6.     $todo_ok = 0;
  7.     $sql="SELECT id FROM usuarios_datos WHERE email = '$email'";
  8.     $result = mysql_query($sql);
  9.     if($row_usuario = mysql_fetch_array($result)){
  10.         $error_email = "Ya se encuentra un usuario registrado con ese email.<br>Intenta otra vez!<br>";
  11.         $todo_ok = 1;
  12.     }
  13.            
  14.     $sql="SELECT id FROM usuarios_datos WHERE login = '$login_usuario'";
  15.     $result = mysql_query($sql);
  16.     if($row_usuario = mysql_fetch_array($result)){
  17.         $error_login = "Ya se encuentra un usuario registrado con ese login.<br>Intenta otra vez!<br>";
  18.         print_r($row_usuario);
  19.         $todo_ok = 1;
  20.    
  21.     }
  22.  
  23.     if(!preg_match("/^[a-zA-Z0-9áéíóúàèìòùÁÉÍÓÚÀÈÌÒÙÑñ\s]{2,30}+$/",$nombre)){
  24.         $error_nombre = "Debe escribir un nombre válido.";
  25.         $todo_ok = 1;
  26.     }
  27.  
  28.     if(!preg_match("/^[a-zA-Z0-9áéíóúàèìòùÁÉÍÓÚÀÈÌÒÙÑñ\s]{2,30}+$/",$apellido)){
  29.         $error_apellido = "HOLAAA.";
  30.         $todo_ok = 1;
  31.     }

Como de costumbre spider_boy eres el mejor.
  #33 (permalink)  
Antiguo 17/03/2010, 06:49
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: AYUDA sobre campo de Usuario con comprobación

A ver si te he entendido algo. Pasa que no estás cerrando con un else las condiciones, así que las validará todas como es lógico.
¿Porqué repites la consulta a la BD preguntando si el usuario existe?
Lo de la validación ¿no habíamos quedado en que lo hicieras primero y luego la consulta?
Me parece que lo que te falta es algo de estudio
  #34 (permalink)  
Antiguo 17/03/2010, 06:52
(Desactivado)
 
Fecha de Ingreso: marzo-2010
Mensajes: 40
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: AYUDA sobre campo de Usuario con comprobación

donde repito la consulta...?, en PHP estoy empezando y se lo justo, este código lo tenia ya hecho, si eres tan amable puedes decirme según tu cual es el problema basandote en mi código.
  #35 (permalink)  
Antiguo 17/03/2010, 07:05
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: AYUDA sobre campo de Usuario con comprobación

Sin verificar mucho la lógica de tu code
Código PHP:
Ver original
  1. include("...");
  2. mbanner($titulo_sitio,$nombre_usuario_session,$apellido_usuario_session,$usuario_usuario_session);
  3. $incluir = "";
  4.     if(!preg_match("/^[a-zA-Z0-9áéíóúàèìòùÁÉÍÓÚÀÈÌÒÙÑñ\s]{2,30}+$/",$nombre)){
  5.         $error_nombre = "Debe escribir un nombre válido.";
  6.         $todo_ok = 1;
  7.     } else if {
  8.         if(!preg_match("/^[a-zA-Z0-9áéíóúàèìòùÁÉÍÓÚÀÈÌÒÙÑñ\s]{2,30}+$/",$apellido)){
  9.             $error_apellido = "HOLAAA.";
  10.             $todo_ok = 1;
  11.         }
  12.     } else {
  13.         if($procesa == "si"){
  14.         $todo_ok = 0;
  15.         $sql="SELECT id FROM usuarios_datos WHERE email = '$email'";
  16.         $result = mysql_query($sql);
  17.         if($row_usuario = mysql_fetch_array($result)){
  18.             $error_email = "Ya se encuentra un usuario registrado con ese email.<br>Intenta otra vez!<br>";
  19.             $todo_ok = 1;
  20.         } else if {
  21.             $sql="SELECT id FROM usuarios_datos WHERE login = '$login_usuario'";
  22.             $result = mysql_query($sql);
  23.                 if($row_usuario = mysql_fetch_array($result)){
  24.                     $error_login = "Ya se encuentra un usuario registrado con ese login.<br>Intenta otra vez!<br>";
  25.                     print_r($row_usuario);
  26.                     $todo_ok = 1;
  27.                 }
  28.             }
  29.  
  30.         }
  31.     }
  #36 (permalink)  
Antiguo 17/03/2010, 07:16
(Desactivado)
 
Fecha de Ingreso: marzo-2010
Mensajes: 40
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: AYUDA sobre campo de Usuario con comprobación

Ahora si que me mataste, lo que pones ai esta al reves de como lo tengo yo. Y te lo agradezco muchisimo pero no comprendo nada de nada. Lo que menos entiendo es pq subes las comprobaciones de nombre y apellidos (esas son solo dos pero siguen, hay muchisimas más, solo puse esas), y no me queda claro donde repito la consulta del usuario y en que afecta eso a que si tengo el print_r se rompa la web y si no lo tengo no.
  #37 (permalink)  
Antiguo 17/03/2010, 07:24
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: AYUDA sobre campo de Usuario con comprobación

Debes hacer TODAS las comprobaciones antes de consultar la BD, porq sino correrías el riesgo de consultar en bano. ¿no? Aunque ahora lo miro y no consultas contra nombre y apellido, ummmm ¿para q comprobarlos entonces? Me apoyaré en lo que dices que no pusiste todas las comprobaciones.......
Nop, no la repites la consulta, por eso la puse arriba así. Error mío.........
Si el error es el q posteaste arriba (unexpected $end) era una llave q te faltaba de cierre. Si es otro pues lo posteas
salu2
  #38 (permalink)  
Antiguo 17/03/2010, 08:36
(Desactivado)
 
Fecha de Ingreso: marzo-2010
Mensajes: 40
Antigüedad: 14 años, 1 mes
Puntos: 0
AYUDA Problema con "print_r"

Buenas Tardes,

Veamos, el problema que tengo es el siguiente, tengo un formulario de registro de usuario que almacena datos en una SQL. El campo del "Nombre de Usuario" tiene una validación para ver si el nombre ya lo tiene otro usuario y de ser asi mostrar un mensaje de error.

el problema radica en que cuando el nombre esta usado o ya existe, efectivamente genera el mensaje de error bajo la celda pero tambien genera un código que se cuela entre el cuerpo de la web que pone (Array ( [0] => 4 [id] => 4 ), concretamente lo mete entre el logotipo de la web y el cuerpo del formulario, muy similar a los errores tipicos de apache que muestra cuando falta un include o algo similar.

El caso es que al borrar el "print_r" el problema desaparece, mi duda es, pq muestra ese código en el medio de la web...? y Como lo soluciono?, os dejo el código. El print_r esta en la linea 18:

Código PHP:
Ver original
  1. <?
  2. include("...");
  3. mbanner($titulo_sitio,$nombre_usuario_session,$apellido_usuario_session,$usuario_usuario_session);
  4. $incluir = "";
  5. if($procesa == "si"){
  6.     $todo_ok = 0;
  7.     $sql="SELECT id FROM usuarios_datos WHERE email = '$email'";
  8.     $result = mysql_query($sql);
  9.     if($row_usuario = mysql_fetch_array($result)){
  10.         $error_email = "Ya se encuentra un usuario registrado con ese email.<br>Intenta otra vez!<br>";
  11.         $todo_ok = 1;
  12.     }
  13.            
  14.     $sql="SELECT id FROM usuarios_datos WHERE login = '$login_usuario'";
  15.     $result = mysql_query($sql);
  16.     if($row_usuario = mysql_fetch_array($result)){
  17.         $error_login = "Ya se encuentra un usuario registrado con ese login.<br>Intenta otra vez!<br>";
  18.         print_r($row_usuario);
  19.         $todo_ok = 1;
  20.    
  21.     }
  22.  
  23.     if(!preg_match("/^[a-zA-Z0-9áéíóúàèìòùÁÉÍÓÚÀÈÌÒÙÑñ\s]{2,30}+$/",$nombre)){
  24.         $error_nombre = "Debe escribir un nombre válido.";
  25.         $todo_ok = 1;
  26.     }
  27.  
  28.     if(!preg_match("/^[a-zA-Z0-9áéíóúàèìòùÁÉÍÓÚÀÈÌÒÙÑñ\s]{2,30}+$/",$apellido)){
  29.         $error_apellido = "HOLAAA.";
  30.         $todo_ok = 1;
  31.     }

El código continua, pero el que pego es el relevante.
  #39 (permalink)  
Antiguo 17/03/2010, 08:41
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: AYUDA Problema con "print_r"

Seria bueno que revisaras esto:

print_r()

Tal vez necesitas print "texto"; o echo "texto";

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #40 (permalink)  
Antiguo 17/03/2010, 08:46
(Desactivado)
 
Fecha de Ingreso: marzo-2010
Mensajes: 40
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: AYUDA Problema con "print_r"

si en este caso el print_r lo tengo asi print_r($row_usuario) y esta bien en base a lo que tu me pasas pero el problema esta en que me muestra el resultado del array en medio de la web, cuando ese resultado no deberia mostrarlo no..?
  #41 (permalink)  
Antiguo 17/03/2010, 08:52
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: AYUDA como restringir caracteres en un registro

A ver...

Código PHP:
Ver original
  1. $sql="SELECT id FROM usuarios_datos WHERE login = '$login_usuario'";
  2.     $result = mysql_query($sql);
  3.     if($row_usuario = mysql_fetch_array($result)){
  4.         $error_login = "Ya se encuentra un usuario registrado con ese login.<br>Intenta otra vez!<br>";
  5.         print_r($row_usuario);
  6.         $todo_ok = 1;
  7.     }

Eso, de por si, en parte, está malo xD.

Esta línea es incorrecta :

Código PHP:
Ver original
  1. if($row_usuario = mysql_fetch_array($result)){

Cuando usas solo un '=', se le llama asignación, para lo cual no te sirve, porque tú deseas comparar, así que debería ser un doble '=', por otro lado, esa comparación estaría mal de todas formas, porque $row_usuario jamás será igual al valor devuelto por mysql_fetch_array. Lo que pretendes hacer es lo siguiente :

Código PHP:
Ver original
  1. $sql="SELECT id FROM usuarios_datos WHERE login = '$login_usuario'";
  2.     $result = mysql_query($sql);
  3.     $row_usuario = mysql_fetch_array($result);
  4.     // Preguntamos si hay valor alguno, si lo hay, es porque el usuario ya existe.
  5.     if(mysql_num_rows($result) > 0){
  6.         $error_login = "Ya se encuentra un usuario registrado con ese login.<br>Intenta otra vez!<br>";
  7.         #print_r($row_usuario);
  8.        $todo_ok = 1;
  9.     }

Con respecto al print_r, sería mejor que nos mostraras que es lo que imprime. Por cierto... ¿para qué pones print_r dentro de ese if? No le veo sentido.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #42 (permalink)  
Antiguo 17/03/2010, 08:54
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: AYUDA Problema con "print_r"

¿Y si no debería mostrarlo para q el print_r?
¿Q ya no había iniciado otro post cone ste MISMO tema?
¿No resolviste con lo q allí se te dijo?
  #43 (permalink)  
Antiguo 17/03/2010, 08:59
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: AYUDA como restringir caracteres en un registro

print_r no tiene sentido dentro de ese if. Simplemente bórralo, está sobrando.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.

Etiquetas: caracteres, registro, restringir
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 22:53.