Foros del Web » Programando para Internet » PHP »

Problema con sesión y cookie

Estas en el tema de Problema con sesión y cookie en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 10/05/2012, 04:41
Avatar de 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 :) ?
  #2 (permalink)  
Antiguo 10/05/2012, 05:25
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años
Puntos: 15
Respuesta: Problema con sesión y cookie

Vale, he podido solucionar lo del login, es decir, que el usuario se logue y lo mande al index sin problema. En vez de usar isset tendgo que usar empty y listo :)

El problema que tengo es que cuando pongo el usuario o contraseña mal salta el if que genera un session llamado logueofail y devuelve true, luego redirige con un header al login.php
Código 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
            
$_SESSION["logueofail"] = TRUE;
            
//header("Location: login.php");
            
var_dump($_SESSION["logueofail"]);
        }
    } 
Código PHP:
<?php
        
if(!empty($_SESSION["logueofail"]))
        {
?>
            <div style="color:red;">Usuario o Contraseña incorrectos</div>
<?php
            
unset($_SESSION["logueo"]);
            
session_destroy();
        }
?>
La cosa es que quiero comprobar como bien pone ahí que si no está vacío logueofail muestre el cartelito que ha introducido mal los datos, luego se destruye la sesión y listo. Pero aunque haga un var_dump al comienzo de todo para ver si se pasa el contenido a esta página no lo hace, siempre está vacía esta variable y no se por qué puede ser.

Alguna idea?

gracia !!
__________________
Os iusti meditabitur sapientiam
Si te he ayudado, por qué no un poquito de Karma :) ?

Etiquetas: cookies, sesiones
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 12:16.