Estoy tratando de que mi página ofrezca la posibilidad de recordar a los usuarios que se identifican en ella, para lo que estoy usando cookies. El caso es que parece que funcione sólo cuando le da la gana. A veces me identifico y al cerrar el navegador (es decir, al terminar la sesión) y al volver a entrar en la página me recuerda, independientemente de que yo elija que me recuerde o no, mientras que otras veces hace justo lo contrario: no importa lo que yo elija, nunca me recuerda. Todo eso sin cambiar el código en lo más mínimo. He visto que los setcookie no estaban arriba del todo (aunque estaban en el head), así que he decidido ponerlo arriba y hasta ahora el resultado es que no me recuerda nunca.
Voy a poner el código que interesa (cualquier parte en la que haga algo con cookies) en orden de ejecución:
1. Crear las cookies si se elige la opción de recordar.
Código PHP:
if (isset($_POST['recordar'])) {
setcookie('logueado', $_SESSION['logueado'], time() + 3600*24*100, '', '', 0);
setcookie('nombreU', $_SESSION['nombreU'], time() + 3600*24*100, '', '', 0);
}
Código PHP:
if (isset($_POST['salir'])) {
$_SESSION['logueado']=false;
unset($_COOKIE['logueado']);
unset($_COOKIE['nombreU']);
}
Código PHP:
<?php
if (!$_SESSION['logueado'] && !$_COOKIE['logueado']) {
include("menuder/login.php");
if (!$log && isset($_POST['logsend'])) {
?>
<script type="text/javascript">
falloLogin();
</script>
<?php
}
}
else {
include("menuder/panel.php");
}
?>
Código PHP:
if ($_COOKIE['logueado']) {
$sql="SELECT * FROM usuario WHERE uname='".$_COOKIE['nombreU']."'";
}
else {
$sql="SELECT * FROM usuario WHERE uname='".$_SESSION['nombreU']."'";
}
Código PHP:
function loguear($datosU) {
// Conexión con la BD
Esto está bien, no hace falta que lo ponga :P
// Se recogen los datos de la BD
$sql="SELECT * FROM usuario WHERE uname='".$datosU['nombreU']."'";
$res=mysql_query($sql,$link);
// Se comprueba si el usuario existe
if (!($usuario=mysql_fetch_assoc($res))) {
$correcto=0;
}
else {
if ($usuario['pass']==$datosU['contraU']) {
$correcto=1;
$_SESSION['nombreU']=$usuario['uname'];
$_SESSION['logueado']=true;
}
else {
$correcto=0;
}
}
}
![Neurótico](http://static.forosdelweb.com/fdwtheme/images/smilies/scared.png)