Tengo un error rarísimo y no encuentro nada parecido (muy probablemente porque no sé muy bien cómo llamarlo y por tanto buscarlo).
Tengo un sistema de logueo con cookies que funciona bien, salvo en este caso:
Si me logueo en el sistema, marco la opción recordar (salta la cookie) cierro el navegador y lo vuelvo a abrir, el sistema se vuelve loco y redirecciona una y otra vez de manera infinita. Es decir, carga la index, reconoce que hay una cookie activa y carga el menú, pero otra vez vuelva a la index y otra vez al menú y así infinitas veces.
Esto no ocurre si tengo varias pestañas, cierro la de mi sistema, vuelvo a abrir otra pestaña, entro y hace bien el redireccionamiento. Sólo pasa cuando cierro el navegador al completo sin cerrar sesión en mi web. Pasa en todos los navegadores.
Les dejo el código a ver qué puede estar fallando, porque no tengo ni idea:
Login.php:
Código PHP:
.
.
.
$user = makeSafe($_POST["user"]);
$pass = makeSafe($_POST["pass"]);
$recordar = 0;
if(isset($_POST["recordarPass"]))
{
$recordar = $_POST["recordarPass"];
}
.
.
.
if($recordar == 1)
{
/*Creamos las cookies que duran 90 días*/
setcookie("usNick",$user,time()+7776000);
setcookie("usPass",$clave,time()+7776000);
}
En el index.php tengo:
Código PHP:
ob_start();
include('funciones.php');
include("ingreso.php");
$conexion = bd();
if($loginCorrecto)
{
if($tipoUsuario =='User') /*Comprobamos el tipo de usuario para saber qu menu mostrar*/
{
$_SESSION['id'] = $id;
echo '<meta http-equiv="refresh" content = "0; url = menu.php">'; /*Mostramos el menu estándar*/
}else
{
echo '<meta http-equiv="refresh" content = "0; url = Administracion/menuAdmin.php">'; /*El usuario es admin, por tanto mostramos el menú de administración*/
}
}
Código PHP:
<?php
ob_start();
?>
<?php
include_once ('funciones.php');
$conexion = bd();
$loginCorrecto = false;
$id;
$nombre;
$tipoUsuario;
if(isset($HTTP_COOKIE_VARS["usNick"]) && isset($HTTP_COOKIE_VARS["usPass"]))
{
$sql = "SELECT *
FROM usuarios
WHERE user='".$HTTP_COOKIE_VARS["usNick"]."'
AND pass='".$HTTP_COOKIE_VARS["usPass"]."'";
$res = mysql_query($sql);
if($row = mysql_fetch_array($res))
{
setcookie("usNick",$HTTP_COOKIE_VARS["usNick"],time()+7776000);
setcookie("usPass",$HTTP_COOKIE_VARS["usPass"],time()+7776000);
$loginCorrecto = true;
$id = $row["id"];
$nombre = $row["user"];
$tipoUsuario = $row["tipo"];
}else
{
//Destruimos las cookies.
setcookie("usNick","x",time()-3600);
setcookie("usPass","x",time()-3600);
}
mysql_free_result($res);
}
ob_end_flush();
?>
Gracias!