Foros del Web » Programando para Internet » PHP »

Por que las variables de session quedan en 1 cuando se logea por segunda vez

Estas en el tema de Por que las variables de session quedan en 1 cuando se logea por segunda vez en el foro de PHP en Foros del Web. Holas a todos tengo este problema y no e podido resolverlo cuando el usuario se logea por segunda vez en la pagina cualquier variable de ...
  #1 (permalink)  
Antiguo 11/12/2004, 05:38
 
Fecha de Ingreso: marzo-2003
Mensajes: 277
Antigüedad: 14 años, 9 meses
Puntos: 0
Por que las variables de session quedan en 1 cuando se logea por segunda vez

Holas a todos

tengo este problema y no e podido resolverlo
cuando el usuario se logea por segunda vez en la pagina
cualquier variable de session tiene el valor de 1

por ejemplo
El usuario cuando se conecta ingresa al login.php
ingresa los datos correctamente lo mando a la pagina con restriccion
pero si el usuario vuelve a la pagina login.php y vuelve a ingresar los datos correctamente todas las variables de session que creo aparecen en 1

e intentado en el login poner un se session_destroy() pero no funciona
estoy ocupando el Autentificador de Cluster

Código PHP:
<?
//  Autentificator
//  Gestión de Usuarios PHP+Mysql+sesiones
//  by Pedro Noves V. (Cluster)
//  [email][email protected][/email]
//  v1.0  - 17/04/2002 Versión inicial.
//  v1.01 - 24/04/2002 Solucionado error sintactico en aut_verifica.inc.php.
//  v1.05 - 17/05/2002 Optimización código aut_verifia.inc.php
//  v1.06 - 03/06/2002 Corrección de errores de la versión 1.05 y error con navegadores Netscape
//  v2.00 - 18/08/2002 Optimización código + Seguridad.
//                     Ahora funciona con la directiva registre_globals= OFF. (PHP > 4.1.x)
//                     Optimización Tablas SQL. (rangos de tipos).
//  v2.01 - 16/10/2002 Solucionado "despistes" de la versión 2.00 de Autentificator
//                     en aut_verifica.inc.php y aut_gestion_usuarios.php que ocasinavan errores al trabajar
//                     con la directiva registre_globals= OFF.
//                     Solucionado error definición nombre de la sessión.
//
// Descripción:
// Gestión de Páginas restringidas a Usuarios, con nivel de acceso
// y gestión de errores en el Login
// + administración de usuarios (altas/bajas/modificaciones)
//
// Licencia GPL con estas extensiones:
// - Uselo con el fin que quiera (personal o lucrativo).
// - Si encuentra el código de utilidad y lo usas, mandeme un mail si lo desea.
// - Si mejora el código o encuentra errores, hagamelo saber el mail indicado.
//
// Instalación y uso del Gestor de usuarios en:
// documentacion.htm
//  ----------------------------------------------------------------------------


// Motor autentificación usuarios.

// Cargar datos conexion y otras variables.
require ("login.php");


// chequear página que lo llama para devolver errores a dicha página.

$url explode("?",$_SERVER['HTTP_REFERER']);
$pag_referida=$url[0];
$redir=$pag_referida;
// chequear si se llama directo al script.
/*if ($_SERVER['HTTP_REFERER'] == ""){
die ("Error cod.:1 - Acceso incorrecto!");
exit;
}*/


// Chequeamos si se está autentificandose un usuario por medio del formulario
if (isset($_POST['user']) && isset($_POST['pass'])) {

// realizamos la consulta a la BD para chequear datos del Usuario.
$usuario_consulta mysql_query("SELECT * FROM usuarios WHERE nombre = '".quitar($_POST['user'])."'") or die(Header ("Location:  $redir?error=1"));

 
// miramos el total de resultado de la consulta (si es distinto de 0 es que existe el usuario)
 
if (mysql_num_rows($usuario_consulta) != 0){

    
// eliminamos barras invertidas y dobles en sencillas
    
$login stripslashes($_POST['user']);
    
// encriptamos el password en formato md5 irreversible.
    
$password md5($_POST['pass']);

    
// almacenamos datos del Usuario en un array para empezar a chequear.
     
$usuario_datos mysql_fetch_array($usuario_consulta);

    
// liberamos la memoria usada por la consulta, ya que tenemos estos datos en el Array.
    
mysql_free_result($usuario_consulta);

    
// chequeamos el nombre del usuario otra vez contrastandolo con la BD
    // esta vez sin barras invertidas, etc ...
    // si no es correcto, salimos del script con error 4 y redireccionamos a la
    // página de error.
    
if ($login != $usuario_datos['nombre']) {
           
Header ("Location: $redir?error_login=4");
        exit;}

    
// si el password no es correcto ..
    // salimos del script con error 3 y redireccinamos hacia la página de error
    
if ($password != $usuario_datos['clave']) {
        
Header ("Location: $redir?error_login=3");
        exit;}

    
// Paranoia: destruimos las variables login y password usadas
    
unset($login);
    unset (
$password);

    
// En este punto, el usuario ya esta validado.
    // Grabamos los datos del usuario en una sesion.
     // le damos un mobre a la sesion.
    
session_name("usuario");
     
// incia sessiones
    
session_start();

    
// Paranoia: decimos al navegador que no "cachee" esta página.
    
session_cache_limiter('nocache,private');


    
// Asignamos variables de sesión con datos del Usuario para el uso en el
    // resto de páginas autentificadas.

    // definimos usuarios_id como IDentificador del usuario en nuestra BD de usuarios
    
$_SESSION['usuario_id'] = $usuario_datos['cod_user'];
    
    
// definimos usuario_nivel con el Nivel de acceso del usuario de nuestra BD de usuarios
    
$_SESSION['usuario_nivel'] = $usuario_datos['nivel_acceso'];
    
    
//definimos usuario_nivel con el Nivel de acceso del usuario de nuestra BD de usuarios
    
$_SESSION['usuario_login'] = $usuario_datos['nombre'];
        

    
//definimos usuario_password con el password del usuario de la sesión actual (formato md5 encriptado)
    
$_SESSION['usuario_password'] = $usuario_datos['clave'];
    
    
//definimos usuario_porcentaje con el porcentaje del usuario
    
$_SESSION['usuario_datos']=$usuario_datos['datos'];

    
// Hacemos una llamada a si mismo (scritp) para que queden disponibles
    // las variables de session en el array asociado $HTTP_...

    
$pag=$_SERVER['PHP_SELF'];
    
Header ("Location: $pag?");
    exit;
    exit;

   } else {
      
// si no esta el nombre de usuario en la BD o el password ..
      // se devuelve a pagina q lo llamo con error
      
Header ("Location: $redir?error_login=2");
      exit;}
} else {

// -------- Chequear sesión existe -------

// usamos la sesion de nombre definido.
session_name("usuario");
// Iniciamos el uso de sesiones
session_start();

// Chequeamos si estan creadas las variables de sesión de identificación del usuario,
// El caso mas comun es el de una vez "matado" la sesion se intenta volver hacia atras
// con el navegador.

if (!isset($_SESSION['usuario_login']) && !isset($_SESSION['usuario_password'])){
// Borramos la sesion creada por el inicio de session anterior
session_destroy();
die (
"Error cod.: 2 - Acceso incorrecto!");
exit;
}

}
?>
Salu2
__________________
http://www.manuales.astalaweb.com/Mprogramación.htm

diferentes manuales sobre programacion para descargar
  #2 (permalink)  
Antiguo 13/12/2004, 06:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No sé a que te refieres con que "todas las variables de sesión" aparecen en "1".

Lo que si te puedo asegurar es que si no cierras toda ventana de tu aplicación para hacer denuevo el login .. es decir, que vuelves a tu login por algún link que apunta desde tu aplicación y zona restringida al formulario de login, el SID continua con el mismo ID asiginado ..pero en teoría si bien antes de hacer el login y registrar las variables de sesión . .no se hace un session_destroy() para "matar" la posible sesión en curso que existiera .. si que se reescriben los datos de las variables de sesión con los nuevos valores de login (del usuario/nivel de acceso correspondiente).

Desde hace unas versiones de PHP a la fecha existe la función:
session_regenerate_id() .. que podrías usar en:

Código PHP:
 // incia sessiones 
    
session_start(); 

 
// regenerar el SID (generar uno nuevo)
 
session_regenerate_id(); // Ojo .. sólo válido para PHP 4.3.2

    // Paranoia: decimos al navegador que no "cachee" esta página. 
    
session_cache_limiter('nocache,private'); 

    
// Asignamos variables de sesión con datos del Usuario para el uso en el 
    // resto de páginas autentificadas. 

    // definimos usuarios_id como IDentificador del usuario en nuestra BD de usuarios 
    
$_SESSION['usuario_id'] = $usuario_datos['cod_user']; 
Pruebalo y nos comentas .. pero antes aclara que es eso del variables a "1"

Un saludo,
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 12:04.