Foros del Web » Programando para Internet » PHP »

Fallo de autentificación

Estas en el tema de Fallo de autentificación en el foro de PHP en Foros del Web. Tengo un formulario de logueo: Código PHP: <?php if(isset( $_SESSION [ 'usuario' ]) ){  //Comprobamos si existe la sesión Header ( "Location: index.php" ); } else{ //Formulario de logueo echo  '<form action="identify.php" method="POST"> Nombre de usuario: <input type="text" name="nickname" size="30"><br> Contraseña: <input type="password" name="userpass" size="30" ><br> ...
  #1 (permalink)  
Antiguo 09/11/2009, 08:36
Avatar de TheRD  
Fecha de Ingreso: junio-2009
Mensajes: 120
Antigüedad: 14 años, 10 meses
Puntos: 0
Fallo de autentificación

Tengo un formulario de logueo:

Código PHP:
<?php

if(isset($_SESSION['usuario']) ){ //Comprobamos si existe la sesión
Header("Location: index.php");
}
else{
//Formulario de logueo
echo '<form action="identify.php" method="POST">
Nombre de usuario: <input type="text" name="nickname" size="30"><br>
Contraseña: <input type="password" name="userpass" size="30" ><br>
<input type="submit" name="submit" value="Conectarse"></form>'
;
}

?>
Este envia los datos a otro archivo que es el que se ocupa de conectar e identificar al usuario.

Código PHP:
<?php include("config.php");
include(
"templateclass.php");

include(
"templates/header.tpl");

//Variables del formulario [+]
$nick $_POST['nickname'] ;
$pass $_POST['userpass'] ;
$pass md5($pass);
//Variables del formulario [-]

//Variables de validacion [+]
$incorrecto "La contraseña o el nombre de usuario son incorrectos. Rellene bien el formulario.";
//Variables de validacion [-]

if( ($nick == '') or ($pass == '') ){ //Se comprueba que ha completado todo

Header("Location: login.php"); //Contraseña o nombre vacío

}
else{

$usuarios=mysql_query("SELECT * FROM usuarios WHERE nickname='$nick' and password='$pass' ");

    if(
$login mysql_fetch_array($usuarios)){ //Si existe se comienza sesión, de lo contrario, mensaje de error

    
session_register("nickname");

    
session_register("user_id");

    
session_register("permisos"); 

    
$_SESSION['username'] = $login["nickname"];

    
$_SESSION['userid'] = $login["user_id"];

    
$_SESSION['permisos'] = $login["permisos"];

    
Header("Location: index.php");

    }
    else{

    echo 
$incorrecto;

    }



}

?>
El problema es que me da error al loguear, me pasa directamente a echo $incorrecto;
aunque los datos son correctos.
He probado a quitar y poner el md5 de la password, pero no cambia nada.
La contraseña cuando se registra el usuario se manda a la BD encriptada con la función md5(); por eso supuse que debería encriptar la que envía el usuario para que coincidiesen.
¿Alguna idea de porque me pasa esto?
  #2 (permalink)  
Antiguo 09/11/2009, 08:47
Avatar de Fairy_Boy  
Fecha de Ingreso: octubre-2009
Ubicación: Kokiri Forest
Mensajes: 235
Antigüedad: 14 años, 6 meses
Puntos: 5
Respuesta: Fallo de autentificación

has intentado ver que te retorna la query?
para ver que estas comparado con que?
  #3 (permalink)  
Antiguo 09/11/2009, 08:57
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Fallo de autentificación

Hola, que talll. La verdad asi nomas no pareciera que tengas algun error, o por lo menos no me doy cuenta...

Fijate de probar esto a ver si cambia:

cuando comprobas si se completo todo, te conviene usar empty(), o sea

Código PHP:
if( empty($nick) || empty($pass) ){ //Se comprueba que ha completado todo 
cambia los header por redireccionamiento javascript a ver si te funca... Te acordas como son?

Código PHP:
echo "<script languaje='javascript'>location.href='login.php';</script>"
Cita:
Iniciado por Fairy_Boy Ver Mensaje
has intentado ver que te retorna la query?
para ver que estas comparado con que?
Es verdad, te conviene usar or die(), y ademas no te falta algo??? (no se, digo nomas eh =P)

Código PHP:
$usuarios=mysql_query("SELECT * FROM usuarios WHERE nickname='$nick' and password='$pass' "$conectar) or die(mysql_error()); 

//agregue el $conectar q seria mysql_connect("direccion","user","pass") 

Espero que sea algo de eso, yo estuve luchando bastante el otro dia con las sesiones XD...

Suerte!

Última edición por jackson666; 09/11/2009 a las 09:05
  #4 (permalink)  
Antiguo 09/11/2009, 11:20
Avatar de TheRD  
Fecha de Ingreso: junio-2009
Mensajes: 120
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Fallo de autentificación

La función de conectar ya la tengo en el config xD.
Hice todos los cambios y me devuelve exactamente lo mismo ._.

Código PHP:
        $user stripslashes($nick);

        
$user strip_tags($user);
        
$user htmlentities($user);

        
$password stripslashes($pass);

        
$password strip_tags($password);
        
$password md5 $password ); 
Estas son las transformaciones que sufrieron los campos que se piden en el formulario antes de guardarse en la BD, por si sirve de algo :P
  #5 (permalink)  
Antiguo 09/11/2009, 11:51
Avatar de Fairy_Boy  
Fecha de Ingreso: octubre-2009
Ubicación: Kokiri Forest
Mensajes: 235
Antigüedad: 14 años, 6 meses
Puntos: 5
Respuesta: Fallo de autentificación

mmm =/
- pero por lo que ves se guardan bien en la bd?

- esto no lo entiendo, falta algo? x si no faltara nada, entraria siempre ahi al no tener ninguna condicion.

Cita:
//Variables de validacion [+]
$incorrecto = "La contraseña o el nombre de usuario son incorrectos. Rellene bien el formulario.";
//Variables de validacion [-]
- lo ultimo, hiciste lo que tedije? cuando obtienes la query con los resultados, porque no imprimes dichos resultados para ver que estas comparando y con que?
eso aclara muchas dudad.
Saludos!
  #6 (permalink)  
Antiguo 09/11/2009, 14:12
Avatar de TheRD  
Fecha de Ingreso: junio-2009
Mensajes: 120
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Fallo de autentificación

Notice: Undefined variable: login in /opt/lampp/htdocs/anime/identify.php on line 29

Notice: Undefined variable: login in /opt/lampp/htdocs/anime/identify.php on line 30

Esto me salta al imprimir el username y la id
con un echo $login['username'];
  #7 (permalink)  
Antiguo 10/11/2009, 07:23
Avatar de Fairy_Boy  
Fecha de Ingreso: octubre-2009
Ubicación: Kokiri Forest
Mensajes: 235
Antigüedad: 14 años, 6 meses
Puntos: 5
Respuesta: Fallo de autentificación

por lo que veo en tu codigo, en ningun momento le estas asignando un valor a la variable login
es por esto, que te dice "Undefined variable: login"
Saludos!
  #8 (permalink)  
Antiguo 10/11/2009, 09:01
Avatar de TheRD  
Fecha de Ingreso: junio-2009
Mensajes: 120
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Fallo de autentificación

if($login = mysql_fetch_array($usuarios)){

Ahí le asigno el valor a $login
  #9 (permalink)  
Antiguo 10/11/2009, 09:13
Avatar de Fairy_Boy  
Fecha de Ingreso: octubre-2009
Ubicación: Kokiri Forest
Mensajes: 235
Antigüedad: 14 años, 6 meses
Puntos: 5
Respuesta: Fallo de autentificación

=/
lo otro que veo es de como haces la validacion.
le consultas por user y pass a la BD?
yo lo hago de la siguiente manera.
Código PHP:
.
.
.
$usuario = $_POST["usuario"];
    $password = $_POST["password"];
    $result = mysql_query('SELECT Con_Usu, Rut_Usu FROM usuarios WHERE Rut_Usu=\''.$usuario.'\'') or die("MySQL dice: ".mysql_error());
    if($row = mysql_fetch_array($result)){
        if($row['Con_Usu'] == $password){
            $_SESSION["k_username"] = $row['Rut_Usu'];
            //echo 'Has sido logueado correctamente '.$_SESSION['k_username'].' <p>';
            //echo '<a href="index.php">Index</a></p>';
            header ("Location: inicio.php");
        }else{
            ?><script> alert("Contraseña Incorrecta");document.location=('./login.php');</script><?php
.
.
.
ojala te sirva de algo, ya que de la forma que lo haces es raro porque te
arroja el problema.
Saludos!
  #10 (permalink)  
Antiguo 10/11/2009, 10:39
Avatar de TheRD  
Fecha de Ingreso: junio-2009
Mensajes: 120
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Fallo de autentificación

Sigue sin funcionar ._.

Edit: encontré el error!!!
Que mi cadena de password era 30 y el md5 las hace de 32 xDDDD.
Gracias a todos por su tiempo y su ayuda ^^

Última edición por TheRD; 11/11/2009 a las 08:12
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:48.