Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Error en login al validar datos

Estas en el tema de Error en login al validar datos en el foro de PHP en Foros del Web. Hola buenos días, Tengo un problema en un código para validar los datos de un usuario registrado. Introduzco los datos correctos sin embargo no me ...
  #1 (permalink)  
Antiguo 28/02/2013, 10:54
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años
Puntos: 27
Error en login al validar datos

Hola buenos días,

Tengo un problema en un código para validar los datos de un usuario registrado.

Introduzco los datos correctos sin embargo no me deja continuar. Les muestro los códigos:

Tengo el siguiente formulario para ingresar los datos del usuario a la bd.

Código HTML:
<form action="usuario.php" method="post" name="registra-form" id="valida-form">
       <div class="title-forms">Configuración de Usuarios</div>
        <input type="text" name="usuario" id="usuario" class="adaptive-input-b" placeholder="Usuario" required>
        <input type="password" name="password" id="password" class="adaptive-input-b" placeholder="Password" required>                        
        <input type="password" name="confirma" id="confirm" class="adaptive-input-b" placeholder="Confirmar Password" required>                                                
        <input type="email" name="email" id="email" class="adaptive-input-b" placeholder="Correo electrónico" required>
        <select name="tipoUser" id="tipoUser" class="adaptive-input-b">
        	<option value="0">:: Seleccione el tipo de usuario ::</option>
              	<option value="General">General</option>                                                                                                                
               	<option value="Administrativo">Administrativo</option>
               	<option value="Normal">Normal</option>
        </select>
        <input type="submit" name="enviar-usu" id="enviar-usu" class="adaptive-btn" value="AGREGAR">
        <input type="submit" name="borrar-usu" id="borrar-usu" class="adaptive-btn" value="ELIMINAR">
        <input type="submit" name="cambiar-usu" id="cambiar-usu" class="adaptive-btn" value="CAMBIAR">       
        <input type="submit" name="ver-usu" id="ver-usu" class="adaptive-btn" value="BUSCAR">                                                                
</form> 
y por medio de un script php se envían los datos a la base:

Código PHP:
if(isset($_POST['enviar-usu'])){
        
    
$usuario $_POST['usuario'];
    
$password $_POST['password'];
    
$email $_POST['email'];
        
    
$codifPass md5($password);
    
    
$sqlInsertUsuario mysql_query("Insert into gb_usuarios(gbuser_usuario, gbuser_password, gbuser_email, gbuser_tipo) Values ('$usuario', '$codifPass', '$email', '$_POST[tipoUser]')");
        
    
$mensaje 'El usuario ha sido agregado a la tabla de Usuarios';

Como verán uso el md5 pra encriptar el password, el usuario que di de alta (es usuario de prueba) fue el siguiente:

Usuario: Administrador
Password: gb13admin que resultó codificado en 8f8a2f654b442d33c1a9679ee2a45464
Correo: [email protected]
Tipo: General

Hasta ahí todo bien, ahora el formulario del login

Código HTML:
<form action="login.php" method="post">	
      	<input type="text" name="user" id="user" class="adaptive-input-a" placeholder="Nombre de usuario" required />
       	<input type="email" name="email" id="email" class="adaptive-input-a" placeholder="Correo electrónico" required />                    
       	<input type="password" name="password" id="password" class="adaptive-input-a" placeholder="Password" required /><br />
        <span class="format-textos-login"><?php echo $errorSession . ' ' . $msjError; ?></span><br />
        <input type="submit" name="conectar" id="conectar" class="adaptive-btn" value="CONECTAR">
</form> 
y el script que envía la petición a la base de datos:

Código PHP:
function variablesSeguras($variable){
    
$variable addslashes(trim($variable));
    return 
$variable;
}

if(isset(
$_POST['conectar'])) {
       if(!
ctype_alnum($_POST['user'])){ 
        
$msjError 'Sólo se permiten caracteres A-Z, a-z, 0-9'
    } else { 
            
$login variablesSeguras($_POST['user']); }
            
    if(!
ctype_alnum($_POST['password'])){ 
        
$msjError 'Sólo se permiten caracteres A-Z, a-z, 0-9'
    } else { 
        
$passw variablesSeguras($_POST['password']); 
        
$passCod md5(trim($passw));
    }
        
    if(!
preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/"$_POST['email'])) { 
        
$msjError 'Su email no es válido'
    } else { 
        
$email variablesSeguras($_POST['email']); 
    }
        
    
$sqlSelectUser mysql_query("Select * from gb_usuarios Where gbuser_usuario = '$login' and gbuser_password = $passCod and gbuser_email = '$email'");
    
$rowSelectUser mysql_fetch_array($sqlSelectUser);
        
    
$_login_a $rowSelectUser['gbuser_usuario'];
    
$_login_b $rowSelectUser['gbuser_password'];
    
$_login_c $rowSelectUser['gbuser_email'];
    
$_login_d $rowSelectUser['gbuser_tipo'];
        
    if(
$login == $_login_a && $passw == $_login_b && $email == $_login_c){
        
        
$_SESSION['estado'] = "logueado";
        
$_SESSION['usuario'] = $_login_a;
        
$_SESSION['tipo'] = $_login_d;
        
header('Location:index.php');
                    
    } elseif(
$login != $_login_a || $passw != $_login_b || $email != $_login_c) {
    
        
$errorSession "Los datos proporcionados son incorrectos.";
    }

Pienso, no estoy seguro, que el error está al desencriptar el password, porque al principio tenía el formulario sin encriptarlo, cuando use la función fallo. Sin embargo, imprimiendo las variables veo que lleva la misma cadena que la que está en la base de datos [8f8a2f654b442d33c1a9679ee2a45464].

¿Alguien sabe si estoy cometiendo algún error? De antemano agradezco por sus comentarios.

Saludos!
  #2 (permalink)  
Antiguo 28/02/2013, 11:01
Avatar de Ekel  
Fecha de Ingreso: noviembre-2009
Mensajes: 62
Antigüedad: 14 años, 5 meses
Puntos: 3
Respuesta: Error en login al validar datos

esta linea :

Código PHP:
$sqlSelectUser mysql_query("Select * from gb_usuarios Where gbuser_usuario = '$login' and gbuser_password = $passCod and gbuser_email = '$email'"); 
cambiala por :

Código PHP:
$sqlSelectUser mysql_query("Select * from gb_usuarios Where gbuser_usuario = '$login' and gbuser_password = '$passCod' and gbuser_email = '$email'"); 

otra cosa no puedes desencriptar las cadenas.. MD5 es un algoritmo One Way..

se encripta pero no se desencripta..

saludos.
__________________
Black Nation Army
  #3 (permalink)  
Antiguo 28/02/2013, 11:41
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años
Puntos: 27
Respuesta: Error en login al validar datos

Si tienes razón, se encripta nuevamente y se compara con la que esta almacenada (previamente encriptada).

Ya había probado lo que me mencionas, el poner las comillas simples a la variable y sigue sin entrar. Poste el código sin las comillas, pero si debe ir.

Aún no veo el porque falle :/

Gracias Ekel!
  #4 (permalink)  
Antiguo 28/02/2013, 11:47
Avatar de Ekel  
Fecha de Ingreso: noviembre-2009
Mensajes: 62
Antigüedad: 14 años, 5 meses
Puntos: 3
Respuesta: Error en login al validar datos

que tipo de error te sale?
__________________
Black Nation Army
  #5 (permalink)  
Antiguo 28/02/2013, 11:53
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años
Puntos: 27
Respuesta: Error en login al validar datos

Ninguno, simplemente no deja pasar a la siguiente página cuando me logueo. Por ejemplo, en el script le digo que una ves que valida los datos me mande a index.php. Ahora simplemente se queda en la página del login.

Anteriormente guardaba el password tal cual lo escribía (gb13sdmin) y en la ventana del login sólo lo escribía así mismo (gb13admin).

Ahora con el md5, cuando guardo el password se encripta, y escribo en el login (gb13admin), el cual se encripta y compara, pero aunque ya compare las dos cadenas y son iguales... sigue sin funcionar.

Sólo me marca el error que tengo programado

Código PHP:
elseif($login != $_login_a || $passw != $_login_b || $email != $_login_c) {
    
    
$errorSession "Los datos proporcionados son incorrectos." $passCod $login $email;

Saludos!
  #6 (permalink)  
Antiguo 28/02/2013, 12:02
Avatar de Ekel  
Fecha de Ingreso: noviembre-2009
Mensajes: 62
Antigüedad: 14 años, 5 meses
Puntos: 3
Respuesta: Error en login al validar datos

xD
perdon... no habia leido completamente el codigo que pusiste...


el error es que tu almacenas en md5 la contrasena... y cuando la comparas...

comparas password con 5f4dcc3b5aa765d61d8327deb882cf99

(ejemplo)

esto :
Código PHP:
password == 5f4dcc3b5aa765d61d8327deb882cf99 
te devuelve falso...

so.. tienes que comparar..

Código PHP:
if($login == $_login_a && $passw == $_login_b && $email == $_login_c
so tienes que escribir..

Código PHP:
if($login == $_login_a && $passCod == $_login_b && $email == $_login_c
espero eso sea.. xD

saludos. :D
__________________
Black Nation Army
  #7 (permalink)  
Antiguo 28/02/2013, 12:14
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años
Puntos: 27
Respuesta: Error en login al validar datos

Eso de jugar Aion hasta altas horas de la noche... desvelarse, llegar temprano a la oficina y no tomarse un buen café no deja nada bueno u.u

Tenías razón, no realicé los cambios en la comparación, sin embargo me marco el erro nuevamente, pero lo solucioné eliminando un signo "=". Quedo de la siguiente manera:

Código PHP:
if($login $_login_a && $passwCod $_login_b && $email $_login_c){
        
    
$_SESSION['estado'] = "logueado";
    
$_SESSION['usuario'] = $_login_a;
    
$_SESSION['tipo'] = $_login_d;
    
header('Location:index.php');
                    
} elseif(
$login != $_login_a || $passwCod != $_login_b || $email != $_login_c) {
    
    
$errorSession "Los datos proporcionados son incorrectos.";

Te agradezco mucho por tu tiempo y por tus respuestas!! Un saludo!! :D

Etiquetas: formulario, login, mysql, select, sql, tabla, usuarios, variables
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 21:56.