Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/11/2008, 10:37
Avatar de Breaklo
Breaklo
 
Fecha de Ingreso: junio-2008
Ubicación: Buenos Aires
Mensajes: 95
Antigüedad: 16 años, 9 meses
Puntos: 1
Ayuda: PHPSESSID y Login con Cookies

Hola a todos,
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();
?>