Mi problema es el Siguiente, tengo un login que funciona con Base de Datos, en donde se loguean y crea una session, y si marca Remember me , crea cookies.
(EL de la contraseña lo tengo que encriptar, ya se).
La cosa es que si no marcas Remember Me, supuestamente cuando cerras el navegador, deberia terminar la Session, pero me crea el cookie
PHPSESSID que dura un tiempo largo ,y lo toma como si fuera el cookie para loguear. Entonces te reconoce.
Alguien tiene una sugerencia sobre el Script ?
El archivo "config.php" tiene todas las variables.
Login.php
Código PHP:
<?
include('config.php');
session_start();
if((!isset($_SESSION['loggedin'])) && ($_COOKIE["$cookie"] == 1) )
{
$nombre = $_COOKIE["$cookie(nombre)"]; // Select the username from the cookie
$pass = $_COOKIE["$cookie(pass)"]; // Select the password from the cookie
$query = "SELECT nombre,pass FROM usuario WHERE nombre = '$nombre' AND pass = '$pass'";
$result = mysql_query($query, $conectarDB);
if(mysql_num_rows($result))
{
$_SESSION['loggedin'] = 1;
header("Location: $pagina/admin");
}
exit();
}
if (isset($_SESSION['loggedin'])) {
echo "Ya estas Logueado"; }
?>
<form method="post" name="cookie" action="login.php?do=login">
<p><label for="username">Username : <input type="text" name="nombre" id="nombre" /></label></p>
<p><label for="password">Password : <input type="password" name="pass" id="pass" /></label></p>
<p><label for="setcookie"><input type="checkbox" name="setcookie" value="setcookie" id="setcookie" /> Remember Me</label></p>
<p><input type="submit" name="submit" value="Submit" /> <input type="reset" name="reset" value="Reset" /></p>
</form>
<?php
if ((isset($_GET["do"])) && ($_GET["do"] == 'login')) {
session_start(); // Shows we are using sessions
$nombre = $_POST['nombre']; // Gets the inputted username from the form
$pass = $_POST['pass']; // Gets the inputted password from the form
$time = time(); // Gets the current server time
$check = $_POST['setcookie']; // Checks if the remember me button was ticked
$query = "SELECT nombre, pass FROM usuario WHERE nombre = '$nombre' AND pass = '$pass'";
$result = mysql_query($query, $conectarDB);
if(mysql_num_rows($result)) { // If the username and password are correct do the following;
$_SESSION['loggedin'] = 1; // Sets the session 'loggedin' to 1
if($check) { // Check to see if the 'setcookie' box was ticked to remember the user
setcookie("$cookie", "1", $time + 86400);
setcookie("$cookie(nombre)", "$nombre", $time + 86400); // Sets the cookie username
setcookie("$cookie(pass)", "$pass", $time + 86400); // Sets the cookie password
}
header("Location: $pagina/admin");
exit();
}
else // If login is unsuccessful forwards the user back to the index page with an error
{
header("Location: login.php?error=1");
exit();
} }
if (isset($_GET['error']) AND !empty($_GET['error']))
{
echo 'Invalid login data supplied. Please try again.';
}
?>
function admin(); (Es la que comprueba si se inicio sesion)
Código PHP:
function admin() {
session_start();
$isset_session_loggedin = isset($_SESSION['loggedin']);
$cookie_valor = isset($_COOKIE["$cookie"]);
if (!$isset_session_loggedin){
if ($cookie_valor) {
header("Location: $pagina/login.php");
}
else {
header("Location: $pagina/index.php?error=1");
}
exit(); }
}
Y el LOGOUT
Código PHP:
<?php
include('config.php');
session_start();
session_unset();
session_destroy();
if(isset($_COOKIE["$cookie"]))
{
$time = time();
setcookie("PHPSESSID","", $time - 86400);
setcookie("$cookie","", $time - 86400);
setcookie("$cookie(nombre)","", $time - 86400);
setcookie("$cookie(pass)","", $time - 86400);
}
header("Location: $pagina");
exit();
?>