Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/04/2012, 09:24
Avatar de Threepwood
Threepwood
 
Fecha de Ingreso: febrero-2002
Ubicación: Argentina
Mensajes: 906
Antigüedad: 22 años, 11 meses
Puntos: 4
No me identifica si no marco "Recordarme"

Hola!

Implementé un sistema de login con PHP, MySql y sesiones en mi web. El código lo tomé de una web y le hice algunos cambios y quizá uno de ellos fue el que hizo que ocurra el siguiente problema:

Cuando el usuario desmarca la casilla "Recordarme" del formulario el sistema no lo identifica aunque sus datos sean correctos y tampoco da ningún mensaje de error. Simplemente recarga la web sin crear la sesión ni nada. Si el usuario tiene marcado "Recordarme", todo funciona perfecto.

Este es el código:

Código PHP:
session_name('tzLogin');
// Starting the session

session_set_cookie_params(2*7*24*60*60);
// Making the cookie live for 2 weeks

session_start();



if(isset(
$_SESSION['id']) && !isset($_COOKIE['tzRemember']) && !isset($_SESSION['rememberMe']))
{
    
// If you are logged in, but you don't have the tzRemember cookie (browser restart)
    // and you have not checked the rememberMe checkbox:

    
$_SESSION = array();
    
session_destroy();
    
    
// Destroy the session
}



if(isset(
$_GET['logoff']))
{
    
$_SESSION = array();
    
session_destroy();
    
    
header("Location: /index.php");
    exit;
}

if (isset(
$_POST['submit'])) {


  if (
$_POST['submit']=='Login' ){
    
// Checking whether the Login form has been submitted
    
    
$err = array();
    
// Will hold our errors
    
    
    
if(!$_POST['username'] || !$_POST['password'])
        
$err[] = 'El nombre de usuario y contraseña no pueden estar vacíos.';
    
    if(!
count($err))
    {
        
$_POST['username'] = mysql_real_escape_string($_POST['username']);
        
$_POST['password'] = mysql_real_escape_string($_POST['password']);
        
        if (isset(
$_POST['rememberMe'])) {
        
        
$_POST['rememberMe'] = (int)$_POST['rememberMe'];
        
        }
        
// Escaping all input data

        
$row mysql_fetch_assoc(mysql_query("SELECT id,nickname, tipo FROM usuarios WHERE nickname='{$_POST['username']}' AND password='".md5($_POST['password'])."'"));

        if(
$row['nickname'])
        {
            
// If everything is OK login
            
            
$_SESSION['usr']=$row['nickname'];
            
$_SESSION['id'] = $row['id'];
            
$_SESSION['tipo_usuario'] = $row['tipo'];
            if (isset(
$_POST['rememberMe'])) {
            
$_SESSION['rememberMe'] = $_POST['rememberMe'];
            
            
// Store some data in the session
            
            
setcookie('tzRemember',$_POST['rememberMe']);
              }
        }
        else 
$err[]='Nombre de usuario o contraseña incorrectos.';
    }
    
    if(
$err)
    
$_SESSION['msg']['login-err'] = implode('<br />',$err);
    
// Save the error messages in the session

    
header("Location: /index.php");
    exit;
}

'Alguien me podría orientar para saber por dónde arreglar el problema?

Gracias!
__________________
Equívocos sin importancia