Foros del Web » Programando para Internet » PHP »

Problemas al comprobar usuario

Estas en el tema de Problemas al comprobar usuario en el foro de PHP en Foros del Web. Hola! En estos momentos me encuentro modificando la página de perfil de mi web. Mas concretamente en el apartado "cambiar datos" que lo que hace ...
  #1 (permalink)  
Antiguo 25/05/2012, 07:49
 
Fecha de Ingreso: enero-2011
Mensajes: 59
Antigüedad: 13 años, 3 meses
Puntos: 2
Problemas al comprobar usuario

Hola!

En estos momentos me encuentro modificando la página de perfil de mi web. Mas concretamente en el apartado "cambiar datos" que lo que hace es cambiar los datos que ya existen en la base de datos por los que el usuario pongo en un simple formulario.

El problema es al comprobar si el usuario a introducido un "nick" o "email" que ya existe en la base de datos, omitiendo el suyo (es decir, que por ejemplo pueda cambiar el nick pero si el email no quiere pues que no se cambie)

Les dejo mi código simplificado y con algunas anotaciones
Código PHP:
$id $_POST[id]; // Id usuario
$nick $_POST[nick]; // Nick usuario
$email $_POST[email]; // Email del usuario
$pass1 $_POST[pass1]; // Contraseña de su cuenta
$pass2 $_POST[pass2]; // Aqui estaría la nueva contraseña, pero no nos hace falta, es solo para determinar los pasos a seguir

if( ($_POST[nick] == '') or ($_POST[email] == '') or ($_POST[pass1] == '') ){ // Comprobamos que no vengan vacios... si vienen redirigimos a la página mostrando error
Header "Location: http://$linkweb/perfil.php?error=1");
}else{ 
// Si no, continuamos...
if ($pass2 == ''){ // Si el usuario no a introducido una contraseña nueva para su cuenta, continuamos...

$pass1 md5($pass1); // Encrpitamos la contraseña de su cuenta
if ($pass1 == $_SESSION[pass]){ // Si la contraseña es correcta, empezamos. Comparamos la contraseña encriptada con la de su sesión

// Aquí comienza el tema...

$comprobacionuser mysql_query("SELECT * FROM usuarios WHERE nick='$nick'"); // Consulta a la base de datos para determinar si existe ese usuario
if($datos2 mysql_fetch_array($comprobacionuser)){
Header "Location: http://$linkweb/perfil.php?error=4");
}

$comprobacionemail mysql_query("SELECT * FROM usuarios WHERE email='$email'"); // Consulta a la base de datos para determinar si existe ese email
if($datos22 mysql_fetch_array($comprobacionemail)){
Header "Location: http://$linkweb/perfil.php?error=5");
}

$update1 mysql_query("UPDATE usuarios SET nick = '$nick', email = '$email' WHERE id = $id "); // Actualización

session_destroy(); 
He probado a comparar los datos ya obtenidos con el de la sesión pero aún así no se que pasa que no lo hace correctamente
Seguro que debe de ser una solución sencilla o se me escapa alguna tontería... pero hoy no es mi día
Un saludo y gracias desde ya
  #2 (permalink)  
Antiguo 25/05/2012, 16:06
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problemas al comprobar usuario

Parece bastante sencillo:

SELECT * FROM tabla WHERE nombre='$nombre' AND id!=$id

Sólo tienes que filtrar para que el usuario actual no sea considerado en esa consulta.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 26/05/2012, 02:06
 
Fecha de Ingreso: enero-2011
Mensajes: 59
Antigüedad: 13 años, 3 meses
Puntos: 2
Respuesta: Problemas al comprobar usuario

Cita:
Iniciado por Triby Ver Mensaje
Parece bastante sencillo:

SELECT * FROM tabla WHERE nombre='$nombre' AND id!=$id

Sólo tienes que filtrar para que el usuario actual no sea considerado en esa consulta.
Ok, lo probaré... pero una vez esa consulta sea correcta, redirigirá correctamente a la página de error (si el nombre ya existe) sin realizar la consulta?
  #4 (permalink)  
Antiguo 26/05/2012, 02:23
 
Fecha de Ingreso: enero-2011
Mensajes: 59
Antigüedad: 13 años, 3 meses
Puntos: 2
Respuesta: Problemas al comprobar usuario

¡Muchas gracias Triby!
Funciona a la perfección, asi es como al final quedó todo...
Código PHP:
$comprobaremail mysql_query("SELECT * FROM usuarios WHERE email='$email' AND id!=$id ");
$comprobarusuario mysql_query("SELECT * FROM usuarios WHERE nick='$nick' AND id!=$id ");
if( (
$ok=mysql_fetch_array($comprobaremail)) OR ($ok2=mysql_fetch_array($comprobarusuario))){
Header "Location: http://$linkweb/perfil.php?error=5");
}else{
$update1 mysql_query("UPDATE usuarios SET nick = '$nick', email = '$email' WHERE id = $id "); // Actualización 

Última edición por Polkiko; 26/05/2012 a las 02:29
  #5 (permalink)  
Antiguo 26/05/2012, 02:54
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Problemas al comprobar usuario

Código PHP:
$comprobar mysql_query("SELECT * FROM usuarios WHERE (email='$email' or nick='$nick') AND id!=$id ");
if( (
$ok=mysql_fetch_array($comprobar)){........ 
..y así te ahorras una consulta y es lo mismo.
Saludos!
  #6 (permalink)  
Antiguo 26/05/2012, 03:50
 
Fecha de Ingreso: enero-2011
Mensajes: 59
Antigüedad: 13 años, 3 meses
Puntos: 2
Respuesta: Problemas al comprobar usuario

Cita:
Iniciado por oscartt67 Ver Mensaje
Código PHP:
$comprobar mysql_query("SELECT * FROM usuarios WHERE (email='$email' or nick='$nick') AND id!=$id ");
if( (
$ok=mysql_fetch_array($comprobar)){........ 
..y así te ahorras una consulta y es lo mismo.
Saludos!
Jejeje, muchas gracias... siempre es muy, muy bueno acortar los códigos. Tengo que aprender algo más de SQL . Saludos!

Etiquetas: mysql
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 18:45.