Foros del Web » Programando para Internet » PHP »

Comprobar nombre de usuario y email.

Estas en el tema de Comprobar nombre de usuario y email. en el foro de PHP en Foros del Web. Hola tengo esto que me genero el dreamweaver para verificar que el email introducido a la hora de registrarse no estaba ya en la base ...
  #1 (permalink)  
Antiguo 15/01/2012, 05:26
 
Fecha de Ingreso: diciembre-2011
Mensajes: 151
Antigüedad: 12 años, 10 meses
Puntos: 1
Comprobar nombre de usuario y email.

Hola tengo esto que me genero el dreamweaver para verificar que el email introducido a la hora de registrarse no estaba ya en la base de datos.

// *** Redirect if username exists
$MM_flag="MM_insert";
if (isset($_POST[$MM_flag])) {
$MM_dupKeyRedirect="alta_emailrepetido.php";
$loginUsername = $_POST['strEmail'];
$login = $_POST['strNombre'];
$LoginRS__query = sprintf("SELECT * FROM tblusuario WHERE strEmail=%s OR strNombre=%s", GetSQLValueString($loginUsername, "text"), GetSQLValueString($login, "text"));
mysql_select_db($database_conexionzulo, $conexionzulo);
$LoginRS=mysql_query($LoginRS__query, $conexionzulo) or die(mysql_error());
$loginFoundUser = mysql_num_rows($LoginRS);

//if there is a row in the database, the username was found - can not add the requested username
if($loginFoundUser){
$MM_qsChar = "?";
//append the username to the redirect page
if (substr_count($MM_dupKeyRedirect,"?") >=1) $MM_qsChar = "&";
$MM_dupKeyRedirect = $MM_dupKeyRedirect . $MM_qsChar ."requsername=".$loginUsername;
header ("Location: $MM_dupKeyRedirect");
exit;
}
}

Yo ademas queria que comprobase el nombre de usuario. Asi que le añadi el OR strNombre=%s

Bien ahora lo esta haciendo bien, pero no me diferencia si es el usuario o el email. Me gustaria saber si puedo aprovechar ese codigo para diferenciarlos o tendria que hacer uno nuevo para cada cosa. Para el user y para el email.

Gracias de antemano !
  #2 (permalink)  
Antiguo 15/01/2012, 06:20
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 13 años, 2 meses
Puntos: 297
Respuesta: Comprobar nombre de usuario y email.

Cambia el OR por un AND, aunque no he leído el código que te ha generado.
  #3 (permalink)  
Antiguo 15/01/2012, 10:42
 
Fecha de Ingreso: agosto-2011
Ubicación: Viña del Mar, Chile
Mensajes: 311
Antigüedad: 13 años, 2 meses
Puntos: 50
Respuesta: Comprobar nombre de usuario y email.

Hola,
El AND exigirá que ambas condiciones se cumplan..el or está bién..lo malo es que como validas las filas no sabrás cuál de los dos campos está repetido..puedes enviar un mensaje como el nombre de usuario y /o el email está en uso...o hacer dos validaciones 1 para cada variable...para seguir con la lógica de tu script..
__________________
He aprendido mucho y sigo aprendiendo cada día aquí...así que ayudo cuando puedo para disminuir mi deuda XD..
mi hobby
  #4 (permalink)  
Antiguo 15/01/2012, 12:24
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 13 años, 2 meses
Puntos: 297
Respuesta: Comprobar nombre de usuario y email.

Lo que te hace el OR es que si el nombre o el email existen, entra, no que coinciden en la misma fila, por eso el AND.

Para que lo entiendas, tenemos varios usuario:

Código:
Nombre      | Correo
--------------------------------------------------
Juan        | [email protected]
Pedro       | [email protected]
Estefanía   | [email protected]
Si nosotros mandamos la consulta como tu la tienes del siguiente modo:

Código SQL:
Ver original
  1. SELECT * FROM tblusuario WHERE strEmail='[email protected]' OR strNombre='Juan'

Nos devolverá 2 filas con todos los datos del usuario:

Código:
Y como el script que te ha generado el Dreamweaver con que simplemente devuelva algo (en este caso dos filas), pues sigue trabajando y por eso te da fallo.

Con el AND eso no pasa, si hacemos la misma consulta no devolverá nada, porque no coincide el nombre Juan con el correo [email protected] en la misma fila.
  #5 (permalink)  
Antiguo 15/01/2012, 12:39
 
Fecha de Ingreso: agosto-2011
Ubicación: Viña del Mar, Chile
Mensajes: 311
Antigüedad: 13 años, 2 meses
Puntos: 50
Respuesta: Comprobar nombre de usuario y email.

Aquí lo que nobo quiere es que si existe un nombre en una tabla o un mail en una tabla no se registre, con el and si un nombre de usuario ya existe pero se ingresa con otro mail lo dejaría crear el usuario con el mismo username, yo entiendo que lo que quiere validar es que no existan dos username iguales y que además no existan dos correos electrónicos iguales en distintas filas...por eso el OR:

Esta es la validación que hace:
Código PHP:
Ver original
  1. //if there is a row in the database, the username was found - can not add the requested username
  2. if($loginFoundUser)
si hay una fila con esos parámetros que no se ingrese....
Cita:
Bien ahora lo esta haciendo bien, pero no me diferencia si es el usuario o el email.
La consulta no tiene ningún error y no arroja error...nobo lo que quiere es que le indique si es el email o el username el que está repetido en la tabla,

Saludos
__________________
He aprendido mucho y sigo aprendiendo cada día aquí...así que ayudo cuando puedo para disminuir mi deuda XD..
mi hobby
  #6 (permalink)  
Antiguo 15/01/2012, 13:03
 
Fecha de Ingreso: diciembre-2011
Mensajes: 151
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: Comprobar nombre de usuario y email.

Si eso es... El AND lo unico que hace es que las 2 condiciones se tengan que cumplir para que reedireccione a la pagina de error. Con el OR lo que hace es que si uno u otro ya estan en la base de datos no lo registre. Lo esta haciendo bien. Pero me gustaria efectivamente como dice snowmanchip que diferencie entre que es lo que esta repetido, si el email o el nombre de usuario...

Ahora bien... Me pregunto si necesito repetir el codigo, exactamente igual y poner strEmail en uno y strNombre en otro. Si debieran ser igual o... Por el contrario para ahorrar codigo si con este que ya tengo puedo hacer que valide los dos ;)

No se si me explique bien :S

snowman si me entendio. Alguna sugerencia de como hacerlo snowman ?
  #7 (permalink)  
Antiguo 15/01/2012, 13:07
 
Fecha de Ingreso: agosto-2011
Ubicación: Viña del Mar, Chile
Mensajes: 311
Antigüedad: 13 años, 2 meses
Puntos: 50
Respuesta: Comprobar nombre de usuario y email.

Lo mejor en esto es probar...si usas el código actual no diferenciará la variable que se repite ya que lo que busca es una fila y para cualquiera de los dos valores te arrojará el mismo mensaje...prueba repitiendo cambiando la validación por email y la variable loginfounderuser por $validaemail para que mantengas la estructura de tu script..

Saludos
__________________
He aprendido mucho y sigo aprendiendo cada día aquí...así que ayudo cuando puedo para disminuir mi deuda XD..
mi hobby
  #8 (permalink)  
Antiguo 15/01/2012, 13:11
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 6 meses
Puntos: 322
Respuesta: Comprobar nombre de usuario y email.

Tu condición está mal, debe ir algo como:
Código PHP:
Ver original
  1. if($loginFoundUser == 0){
  2.     // usuario no existe, continuar registro....
  3. }else{
  4.     // usuario(s) ya existe(n)
  5. }
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #9 (permalink)  
Antiguo 15/01/2012, 13:23
 
Fecha de Ingreso: diciembre-2011
Mensajes: 151
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: Comprobar nombre de usuario y email.

sourcegeek, pues funcionar funciona...

Y eso que pones es para el user y para el mail ?
  #10 (permalink)  
Antiguo 15/01/2012, 13:45
 
Fecha de Ingreso: agosto-2011
Ubicación: Viña del Mar, Chile
Mensajes: 311
Antigüedad: 13 años, 2 meses
Puntos: 50
Respuesta: Comprobar nombre de usuario y email.

Nobo prueba este código:

Código PHP:
Ver original
  1. //Array con mensajes de error
  2. $errores=array();
  3. //después de $loginFoundUser = mysql_num_rows($LoginRS);
  4. $prueba=mysql_fetch_array($LoginRS);
  5. //Después de if($loginFoundUser){
  6. if($$loginUsername == $prueba['strEmail'])
  7. //Mensaje de error si el mai existe
  8.       $error ['username']= "$loginUsername ya está en uso, por favor elige otro email.";
  9.       if($login == $prueba['strNombre'])
  10.       //Mensaje de error si el nombre de usuario existe
  11.       $error ['mail']= "$login ya está en uso, por favor elige un nombre de usuario diferente.";
  12.    
  13.   }
en el lugar del html que quieras mostrar los errores pones esto:

Código PHP:
Ver original
  1. <?php
  2.      if ($errores){
  3.         echo '<ul>';
  4.         foreach($errores as $alerta){
  5.             echo "<li>$alerta<li>\n";
  6.         }
  7.         echo "</ul>";
  8.          
  9.      }
  10.      
  11.      ?>

Con esto puedes usar la consulta como la tienes y también te mostrará si es el mail , el nombre de usuario el repetido o ambos..
Saludos
__________________
He aprendido mucho y sigo aprendiendo cada día aquí...así que ayudo cuando puedo para disminuir mi deuda XD..
mi hobby
  #11 (permalink)  
Antiguo 15/01/2012, 13:53
 
Fecha de Ingreso: agosto-2011
Ubicación: Viña del Mar, Chile
Mensajes: 311
Antigüedad: 13 años, 2 meses
Puntos: 50
Respuesta: Comprobar nombre de usuario y email.

Hasdpk...no comprendo el motivo del karma negativo que me has puesto, realmente desmotiva esto cuando se trata de un usuario con experiencia, lo peor de todo es que tu comentario fué equivocado , ni yo pensé siquiera en ponerte una nota negativa, ya que todos nos equivocamos y además estabas tratando de ayudar como la mayoría aquí...
Saludos
__________________
He aprendido mucho y sigo aprendiendo cada día aquí...así que ayudo cuando puedo para disminuir mi deuda XD..
mi hobby
  #12 (permalink)  
Antiguo 15/01/2012, 14:01
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 13 años, 2 meses
Puntos: 297
Respuesta: Comprobar nombre de usuario y email.

Cierto, mi afirmación estaba equivocada en relación a la consulta. Te lo puse porque simplemente comentastes mi errata y te fuistes sin ofrecer una solución, como puse de manifiesto en el karma.

PD: Estas cosas se solucionan por MP.
  #13 (permalink)  
Antiguo 15/01/2012, 14:05
 
Fecha de Ingreso: agosto-2011
Ubicación: Viña del Mar, Chile
Mensajes: 311
Antigüedad: 13 años, 2 meses
Puntos: 50
Respuesta: Comprobar nombre de usuario y email.

Por MP estas cosas prefiero que queden publicas..porque sencillamente no me parece...y si es así tu en dos oportunidades no ofreciste ninguna solución, es más empeoraste el tema...
Afortunadamente no vivo del karma, creo que te molestó tu error...
Te dejo una cita:
Cita:
“No hay necesidad de apagar la luz del prójimo para que la nuestra brille”
— BERNARD BARUCH
Saludos
__________________
He aprendido mucho y sigo aprendiendo cada día aquí...así que ayudo cuando puedo para disminuir mi deuda XD..
mi hobby
  #14 (permalink)  
Antiguo 15/01/2012, 14:06
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 6 meses
Puntos: 322
Respuesta: Comprobar nombre de usuario y email.

Continuando con el tema, cometí un error de no comprender bien lo que querías lograr jeje.
Si lo necesitas hacer con una sola consulta, puedes hacer algo así:
Código MySQL:
Ver original
  1. CASE resultado WHEN strEmail = 'el_email' AND strNombre = 'el_nombre' THEN 'ambos'
  2. WHEN strEmail = 'el_email' AND strNombre != 'el_nombre' THEN 'solo_email'
  3. WHEN strEmail != 'el_email' AND strNombre = 'el_nombre' THEN 'solo_nombre'
  4. FROM tblusuario WHERE strEmail = 'el_email' OR strNombre = 'el_nombre'

Se traduce a:
Devuelve resultado = ambos cuando ambos coinciden
Devuelve resultado = solo_email cuando sólo el email coincide
Devuelve resultado = solo_nombre cuando sólo el nombre coincide
No devuelve filas cuando no hay coincidencias


Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #15 (permalink)  
Antiguo 15/01/2012, 14:11
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 13 años, 2 meses
Puntos: 297
Respuesta: Comprobar nombre de usuario y email.

Cita:
Iniciado por snowmanchip Ver Mensaje
Por MP estas cosas prefiero que queden publicas..porque sencillamente no me parece...y si es así tu en dos oportunidades no ofreciste ninguna solución, es más empeoraste el tema...
Afortunadamente no vivo del karma, creo que te molestó tu error...
Te dejo una cita:


Saludos
Sí, cierto, empeoré el tema porque entendí mal el concepto, pero eso no descarta que te fueras sin ofrecer una solución, ¿en que mejor eso la comunidad?.

"El sabio no dice lo piensa, sino piensa lo que dice"
Dicho por un sabio.
  #16 (permalink)  
Antiguo 15/01/2012, 14:15
 
Fecha de Ingreso: agosto-2011
Ubicación: Viña del Mar, Chile
Mensajes: 311
Antigüedad: 13 años, 2 meses
Puntos: 50
Respuesta: Comprobar nombre de usuario y email.

Según tu lógica entonces tú y Sourcegeek merecen karma negativo por su primera respuesta?Así este foro sería negativismo absoluto...si crees que es correcto lo que hiciste ok,
Bueno no quiero comenzar a empeorar más el tema..pero al menos ahora que discutí un poco el karma negativo ya me lo gané y no fue gratuito...
__________________
He aprendido mucho y sigo aprendiendo cada día aquí...así que ayudo cuando puedo para disminuir mi deuda XD..
mi hobby
  #17 (permalink)  
Antiguo 15/01/2012, 14:25
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 13 años, 2 meses
Puntos: 297
Respuesta: Comprobar nombre de usuario y email.

Mira, para no irte la vida en el Karma estás dandole mucho pie a este tema.

A mi me han puesto Karma negativo por decir por ejemplo que una función de PHP devuelve la variable de un modo y en realidad era de otra, o simplemente porque no entendieron lo que expliqué, pero no voy detrás de la gente pidiendo explicaciones, para ello están los comentarios en los Karmas.


PD: Es el último post que escribo en relación a ésto.
  #18 (permalink)  
Antiguo 15/01/2012, 15:27
 
Fecha de Ingreso: diciembre-2011
Mensajes: 151
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: Comprobar nombre de usuario y email.

Bah! Dejar lo del karma que me interesa mas lo de sourcegeek...

Sourcegeek me gusta tu respuesta, acabo de llegar a casa y voy a cenar en cuanto tenga un rato lo reviso. Pero asi por encima... La primera la podriamos suprimir, no? Es decir para que coincidan los 2 antes ha tenido que coincidir alguno de ellos...

En cuanto tenga 5min la vuelvo a montar a ver si funciona con mis datos y como lo tengo hecho ok? Y pongo los resultados ;)

PD: Que mas da el karma?

Etiquetas: mysql, nombre, 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 22:34.