Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/05/2012, 04:41
Avatar de Jask
Jask
 
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años
Puntos: 15
Problema con sesión y cookie

Muy buenas.

Nunca he tenido problemas con las sesiones o cookies hasta ahora :S pero bueno. Os cuento.

Tengo 3 archivos. login.php, checklogin.php e index.php

Login.php es un formulario para insertar usuario y contraseña, nada más. Este formulario va a checklogin.php el cual tiene una consulta si existe ese usuario con esa contraseña, si existe manda al index, si no redirige al login, creado una cookie de una duración de 15 segundos para que muestre el cartel de que ha ingresado mal el usuario o contraseña. Esto lo cambiaré más adelante por ajax y hacerlo más dinámico pero de momento estoy probando así.

En login.php, dentro del formulario y debajo de la caja de password tengo lo siguiente:

login.php
Código PHP:
<?php
if(isset($_COOKIE["logueofail"]))
{
?>
<div style="color:red;">Usuario o Contraseña incorrectos</div>
<?php
}
checklogin.php
Código PHP:
<?php
    session_start
();
    
    
// Conexión con la BD
    
include("lib/funciones.php");
    
    if(isset(
$_POST["user"]))
    {
        
$conexion = new Mysql_Connect();
        
$conexion->selectDB();
        
        
// Query para comprobar si existe o no el usuario
        
$usuario = new User();
        
        
$comprueba mysql_query($usuario->checkUser($_POST['user'], $_POST['pass']));
            
        if(
mysql_num_rows($comprueba) === 1)
        {
            
$_SESSION["usuario"] = $_POST["user"];
            
$_SESSION["logueo"] = TRUE;
            
header("location: index.php");
        }
        else
        {
            
// Definimos una cookie para que el cartel no dure más de 10 segundos
            
setcookie("logueofail"TRUEtime()+15);
            
header("Location: login.php");
            
            
        }
    }
    else
    {
    
//header("Location: login.php");
    
echo "<h2>No se ha pasado el post user.</h2>";
    }
?>
index.php
Código PHP:
<?php
session_start
();

if(!isset(
$_SESSION["logueo"])):
    
header("Location: login.php");
else:
    include(
"lib/funciones.php");
?>
Tengo varios problemas que me gustaría comentar.
  1. Cuando pongo usuario y contraseña y logueo corréctamente me tiene que redirigir a index.php, pues no lo hace me redirige a loguin.php. He comprobado que la sentencia está bien y sin problema pero no entiendo por qué me redirige
  2. Cuando pongo mal la contraseña tendría que crear una cookie en checklogin.php y redirigirme a login.php para que apareazca el mensajito de que insertó mal usuario o contraseña, tampoco lo hace :S
  3. No sé si soy yo pero cuando la sesión está definida y lo compruebo con un isset me devuelve false. Para ser exacto compruebo isset($_SESSION['nombre-que-sea']) y da FALSE (lo veo con un var_dump), por qué puede ser?

Muchas gracias a todos
__________________
Os iusti meditabitur sapientiam
Si te he ayudado, por qué no un poquito de Karma :) ?