Foros del Web » Programando para Internet » PHP »

No me identifica si no marco "Recordarme"

Estas en el tema de No me identifica si no marco "Recordarme" en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 17/04/2012, 09:24
Avatar de Threepwood  
Fecha de Ingreso: febrero-2002
Ubicación: Argentina
Mensajes: 906
Antigüedad: 22 años, 2 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
  #2 (permalink)  
Antiguo 17/04/2012, 09:38
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: No me identifica si no marco "Recordarme"

Como no sabemos cual es la casilla (mejor dicho su denominación) de "recordarme" debes buscar en todos los condicionales donde aparezca session_destroy();. Identifica en cuales de ellos esta involucrado la casilla recordarme, le quitas el condicional asociado a esta casilla y vuelve a intentarlo a ver que tal te funciona.
__________________
Blog de humor http://elcuasatar.net63.net/
  #3 (permalink)  
Antiguo 17/04/2012, 09:49
Avatar de Threepwood  
Fecha de Ingreso: febrero-2002
Ubicación: Argentina
Mensajes: 906
Antigüedad: 22 años, 2 meses
Puntos: 4
Respuesta: No me identifica si no marco "Recordarme"

Hola!

La casilla Recordarme es:

Código HTML:
<label><input name="rememberMe" id="rememberMe" type="checkbox" checked="checked" value="1" /> &nbsp;Recordarme</label> 
Gracias!
__________________
Equívocos sin importancia
  #4 (permalink)  
Antiguo 17/04/2012, 10:19
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: No me identifica si no marco "Recordarme"

Parece que no sabes mucho de php. Ya deberias haber identificado donde esta el error con las pistas que te di.

Si el id de la casilla es "rememberMe" busca en el script todos los relacionados con
$_POST['rememberMe'] que a su vez los relacionas al valor de la sesión a través de
$_SESSION['rememberMe'] = $_POST['rememberMe'];

Si te das cuenta en los condicionales del script en muchos lados esta esta condición es que se destruye la sesión en caso de que esta variable no exista. Solo es que los modifiques segun lo necesites.

Nota ademas que el valor por defecto del chulo es 1. Por tanto si lo quitas te da cero y por eso es que se acaban las sesiones en donde esta relacionado.

Espero y sea de utilidad mi ayuda. Creo que con eso sera suficiente para lograr cambiarlo.
__________________
Blog de humor http://elcuasatar.net63.net/

Etiquetas: formulario, marco, mysql, sql, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:29.