Ver Mensaje Individual
  #4 (permalink)  
Antiguo 08/06/2009, 09:41
16kb
 
Fecha de Ingreso: junio-2009
Mensajes: 5
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: validacion de login y password

Justo iba a crear un tema ahora mismo preguntando lo mismo!!! A mi me da tambien problemas la validacion que estoy haciendo, pero nose si por la misma razon. Por si alguien puede ayudarme a mi tambien, lo explico aqui, ya que esta abierto el tema ya sobre esta cuestion. Yo hago lo siguiente:

En el index tengo el tipico formulario de usuario y contraseña, el cual hace el submit a un archivo php que procesa la informacion. Ese archivo lo que hace es comprobar si el usuario existe en la base de datos. Si existe y coincide el password, pongo una variable de sesion 'error' a 0. Si existe pero no coincide el password, pongo esa variable de 'error' a 1. Y si no existe el usuario, pongo la variable de 'error' a 2. Asi puedo saber si el login fue bien, y si da error, si es por no existir el usuario o por que el password sea incorrecto. Despues de esto, lo que hago es hacer un Header('Location: ') al index otra vez, donde consulto esa variable de sesion 'error', y en funcion de su valor imprimo la info del usuario, un error de que no existe el usuario o de password incorrecto. Para que os hagais una idea el codigo es este:

Código PHP:
procesa_informacion.php

if( $mi_usuario->existe_usuario$_POST["nombre"] ) )
    {    
        
// En caso de existir, obtenemos toda la información que queremos guardar en la sesión y comprobamos que el password dado es correcto.
        
$datos $mi_usuario->obtener_datos$_POST["nombre"], array( 'idUsuario''idCSS''NombreUsuario''Password''Privilegio') );
        if( 
$datos[0]["Password"] == $_POST["password"] )
        {
            
// Si es correcto, se asigna toda la información a la sesión del usuario.
            
Sesion::set'error_identificacion');
            
Sesion::set'idUsuario'$datos[0]["idUsuario"] );
            
Sesion::set'idCSS'$datos[0]["idCSS"] );
            
Sesion::set'usuario'utf8_decode$datos[0]["NombreUsuario"] ) );
            
Sesion::set'privilegio'$datos[0]["Privilegio"] );
        }
        else 
        {        
            
// Si no coinciden los passwords, se pone la variable "error_identificacion" a 1, lo cual indica que el password es incorrecto.
            
Sesion::set'error_identificacion');
        }
    }
    else
    {
        
// Si no existe el usuario especificado en la base de datos, se pone la variable "error_identificacion" a 2, lo cual indica que no existe.
        
Sesion::set'error_identificacion');
    }
    
    
// Tras procesar la información, redireccionamos al index de la Web.
    
Header"Location: index.php" ); 
Código PHP:
parte del login en el index

$info_usuario 
'<div class="formulario_usuario"><form id="info_usuario" name="info_usuario" method="post" action="procesa_informacion.php" onsubmit="return validar_formulario(\'info_usuario\')">
                <label for="nombre">Usuario:</label>
                <input id="nombre" name="nombre" type="text" size="20"/>
                <label for="password">Contraseña:</label>
                <input id="password" name="password" type="password" size="20"/>
                <input class="boton_info_usuario" id="enviar" name="enviar" type="submit" value="Aceptar" />
                </form></div>'
;
        if( 
Sesion::is_set'error_identificacion' ) )
        {
            
$error Sesion::get'error_identificacion' );
            if( 
$error == )
            {
                
$info_usuario '';
                
$info_usuario .= '<h1>Usuario: ' Sesion::get'usuario' ) . '</h1>';
                
$info_usuario .= '<a href="./CapaAplicacion/Sesion/cerrar_sesion.proc.php"> Cerrar sesi&oacute;n </a>';    
                
            }
            elseif( 
$error == )
            {
                
$info_usuario .= '<div class="mensaje_info_usuario">Error: Password incorrecto. <a href="index.php?mod=registro">Reg&iacute;strate</a></div>';
            }
            elseif( 
$error == )
            {
                
$info_usuario .= '<div class="mensaje_info_usuario">Error: El usuario no existe. &nbsp;<a href="index.php?mod=registro">Reg&iacute;strate</a></div>';
            }
        }
        else 
        {
            
$info_usuario .= '<div class="mensaje_info_usuario"><a href="index.php?mod=registro">Reg&iacute;strate</a></div>';
        }
        echo 
$info_usuario;
    } 

Hasta aqui todo parece que tiene que ir bien, pero el problema es cuando envio la informacion del formulario. Al volver al index, no hace nada, pero al darle al F5 y refrescar la pagina entonces si que me pone los mensajes de error y eso. Y si cierro la ventana y vuelvo a abrir la pagina, me queda con la ultima informacion que meti. Llevo un dia entero con esto y no se que puede ser. ¿Tendra que ver algo con el Location?

Muchas gracias por la ayuda.