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
}
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", TRUE, time()+15);
header("Location: login.php");
}
}
else
{
//header("Location: login.php");
echo "<h2>No se ha pasado el post user.</h2>";
}
?>
Código PHP:
<?php
session_start();
if(!isset($_SESSION["logueo"])):
header("Location: login.php");
else:
include("lib/funciones.php");
?>
- 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
- 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
- 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