Foros del Web » Programando para Internet » PHP »

Sessiones y F5

Estas en el tema de Sessiones y F5 en el foro de PHP en Foros del Web. Hola!!! hasta ahora pensaba que todo iba bien, hasta que hice la siguiente prueba: entre con un usuario a, que tiene como nombre de usuario:biber ...
  #1 (permalink)  
Antiguo 14/08/2006, 10:14
Avatar de Stickmaster2004  
Fecha de Ingreso: septiembre-2004
Ubicación: Barranquilla
Mensajes: 567
Antigüedad: 13 años, 3 meses
Puntos: 0
Sessiones y F5

Hola!!!

hasta ahora pensaba que todo iba bien, hasta que hice la siguiente prueba:

entre con un usuario a, que tiene como nombre de usuario:biber y contraseña:boy y empresa:1, bueno el entra a su pagina dependiendo del tipo de usuario, lo que si veo extraño es que entre con este perfecto, luego abri otro usuario con otro nombre de usuario y contraseñay empresa y perfecto, pero......., el problema fue cuando me pase de la pagina de este segundo usuario a la del primer usuario y le di un F5 y pues me mostró fue la pagina del segundo usuario, haciendo un:
echo "<script>alert('$usuario')</script>";
me pude dar cuanta que perdió la session y tomó la del ultimo usuario en cuestion, que puede estar sucediendo???
__________________
Solo el que se basa en conocimiento basico y cultiva el aprendizaje obtendra sabiduria
  #2 (permalink)  
Antiguo 14/08/2006, 10:32
Avatar de DarkXNightmare  
Fecha de Ingreso: agosto-2005
Ubicación: Somewhere Over The Rainbo
Mensajes: 181
Antigüedad: 12 años, 4 meses
Puntos: 0
¿Podrías pegar un poco de Script para ver si hay algo mal?

Atte... DarkXNightmare ;D.
__________________
Cambiando mi Web... sean pacientes :P
  #3 (permalink)  
Antiguo 14/08/2006, 10:40
 
Fecha de Ingreso: junio-2001
Ubicación: Cd. Madero, Tam
Mensajes: 83
Antigüedad: 16 años, 5 meses
Puntos: 0
lo que esta pasando es que esta sobre escribiendo las variables de sesion. Tal vez alguien de aqui sepa como corregirlo.
  #4 (permalink)  
Antiguo 14/08/2006, 10:45
Avatar de DarkXNightmare  
Fecha de Ingreso: agosto-2005
Ubicación: Somewhere Over The Rainbo
Mensajes: 181
Antigüedad: 12 años, 4 meses
Puntos: 0
Quizas, te falta un botón de Deslogueo... utilizando un session_destroy().
Como te dije... es mejor pegar un poco de codigo.

Atte... DarkXNightmare ;D.
__________________
Cambiando mi Web... sean pacientes :P
  #5 (permalink)  
Antiguo 14/08/2006, 10:54
Avatar de Stickmaster2004  
Fecha de Ingreso: septiembre-2004
Ubicación: Barranquilla
Mensajes: 567
Antigüedad: 13 años, 3 meses
Puntos: 0
bueno, yo utilizo el autentificador de cluster haciendo algunas variantes, les coloco el codigo:

este es: aut_verifica.inc.php
Código PHP:
<?

require ("aut_config.inc.php");


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


// Conexión base de datos.
// si no se puede conectar a la BD salimos del scrip con error 0 y
// redireccionamos a la pagina de error.
$db_conexionmysql_connect("$sql_host""$sql_usuario""$sql_pass") or die(header ("Location:  $redir?error_login=0"));
mysql_select_db("$sql_db"); 

$empresa=$_POST['emp'];
$usuario=$_POST['user'];

$resulta=mysql_query("select gen_basedatos,emp_codigo 
                      from empxbase 
                      where emp_codigo='"
.mysql_real_escape_string($empresa)."'" ,$db_conexion);

while ( (
$datos2 mysql_fetch_array($resulta)) ) 
{
    
$empresa2=$datos2["gen_basedatos"];
    
$codempresa=$datos2["emp_codigo"];
}  

// realizamos la consulta a la BD para chequear datos del Usuario.
$usuario_consulta mysql_query("SELECT u.usu_nombre,u.tpu_codigo,u.usu_clave,e.gen_basedatos 
                                 FROM $sql_tabla u,empxbase e 
                                 WHERE usu_nombre='"
.mysql_real_escape_string($_POST['user'])."' and 
                                 usu_clave='"
.mysql_real_escape_string($_POST['pass'])."' and 
                                 e.emp_codigo='$empresa' and e.emp_codigo=u.emp_codigo"
) or 
                                 die(
header ("Location:  $redir?error_login=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 $_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);
    
// cerramos la Base de dtos.
    
mysql_close($db_conexion);
    
    
// 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['usu_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['usu_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($usuarios_sesion);
     
// incia sessiones
    
session_start();

    
// Paranoia: decimos al navegador que no "cachee" esta página.
    

header("ETag: PUB" time());
header("Last-Modified: " gmdate("D, d M Y H:i:s"time()-10) . " GMT");
header("Expires: " gmdate("D, d M Y H:i:s"time() + 5) . " GMT");
header("Pragma: no-cache");
header("Cache-Control: max-age=1, s-maxage=1, no-cache, must-revalidate");
session_cache_limiter('nocache,private');  // quite por que no se puede pa' tras
    
    
    
   
    
    //definimos usuario_nivel con el Nivel de acceso del usuario de nuestra BD de usuarios
    
$_SESSION['usu_nombre']=$usuario_datos['usu_nombre'];
   
//definimos usuario_password con el password del usuario de la sesión actual (formato md5 encriptado)
    
$_SESSION['usu_clave']=$usuario_datos['usu_clave'];
    
    
$_SESSION["ba"]=$empresa2;
    
    
$_SESSION["codempresa"]=$codempresa;
    
    
$_SESSION["usu_tipo"]=$usuario_datos['tpu_codigo'];

    
    
// 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;
    
    
    
   } else {
      
// si no esta el nombre de usuario en la BD o el password ..
      // se devuelve a pagina q lo llamo con error
      
?>
      <script>
      alert("El Usuario Digitado es Incorrecto")
      window.location="index.php";
      </script>
      <?
      
//Header ("Location: $redir?error_login=2");
      
exit;}
} else {

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

// usamos la sesion de nombre definido.
session_name($usuarios_sesion);
// 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['usu_nombre']) && !isset($_SESSION['usu_clave'])){
// Borramos la sesion creada por el inicio de session anterior
session_destroy();
die (
"Acceso incorrecto!");
exit;
}
}
?>
y en las demas coloco:

Código PHP:

require("aut_verifica.inc.php");

$usuario=$_SESSION['usu_nombre'];
$l mysql_connect("","sima","123");
mysql_select_db("General",$l);
$r=mysql_query("select t.tpu_codigo 
                from tipousuario t,usuario u 
                where u.usu_nombre='"
.mysql_real_escape_string($usuario)."' and 
                t.tpu_codigo=u.tpu_codigo" 
,$l);
                
while ( (
$rf mysql_fetch_array($r)) ) 
{
$tpu_codigo=$rf["tpu_codigo"];

con $tpu_codigo, recupero el tipo de usuario.

bueno ahora creo que pueden analizar que puede estar pasando, y si ve cluster esto pues que me pegue una manita, vean el codigo que a veces no sabemos donde estamos cometiendo errores nosotros mismos.

les agradeceria mucho.
__________________
Solo el que se basa en conocimiento basico y cultiva el aprendizaje obtendra sabiduria
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:20.