Foros del Web » Programando para Internet » PHP »

AYUDA!!!!!! Problema al cambiar el ID de una sesión..

Estas en el tema de AYUDA!!!!!! Problema al cambiar el ID de una sesión.. en el foro de PHP en Foros del Web. Buenas. Tengo días echandole coco a esto y no logro entender qué está pasando y por ende no sé como solucionarlo. Agradeceré enormemente a quien ...
  #1 (permalink)  
Antiguo 04/08/2005, 16:35
 
Fecha de Ingreso: febrero-2005
Mensajes: 5
Antigüedad: 19 años, 2 meses
Puntos: 0
AYUDA!!!!!! Problema al cambiar el ID de una sesión..

Buenas. Tengo días echandole coco a esto y no logro entender qué está pasando y por ende no sé como solucionarlo. Agradeceré enormemente a quien me pueda echar una mano.


EL PROBLEMA ES EL SIGUIENTE:

Imaginemos que tengo 5 paginas PHP:

pagina1.php
pagina2.php
pagina3.php
pagina4.php
verifica.php

"En palabras": En la pagina1.php tengo un formulario de autentificacion donde el usuario mete su login y su password para entrar en un área restringida.

En la pagina2.php tengo un script que verifica si el login y el password ingresados son válidos.. "Como no estoy usando Base de Datos" y requiero poder autentificar a varios usuarios cada uno con nombre de usuario y password diferentes, el código "para dos usuarios" es algo así:

pagina2.php

<?

if ($_POST["usuario"]=="persona1" && $_POST["contrasena"]=="1234") {

header("Location: pagina3.php?usuario=persona1"); }

else if ($_POST["usuario"]=="persona2" && $_POST["contrasena"]=="4321") {

header("Location: pagina3.php?usuario=persona2"); }

else {

header("Location: pagina1.php?errorusuario=si"); }

?>

( Si el usuario y la contraseña son correctos, con los header redirecciono a la pagina3.php pasando por la URL la variable usuario con el nombre del usuario )

Bien en la pagina3.php

Lo que tengo es un script y lo que deseo con el mismo es lograr que dos usuarios no puedan ingresar simultáneamente al área restringida con el mismo login y password... es decir.. si un usuario ya ingresó con el nombre de usuario=persona1 y contraseña=1234... hasta tanto este no termine su sesion, nadie se pueda conectar usando esos mismos datos:

pagina3.php

<?
// Recojo la variable que viene por la URL de pagina2.php con el nombre de usuario con el que se acaban de conectar

$usuario=$_GET['usuario'];

// Verifico si ya existe un fichero de sesion cuyo id sea dicho nombre de usuario

if (file_exists("../../../tmp/sess_".$usuario)) {

// Si el archivo existe es porque alguien ya entro al sistema con ese nombre de usuario y password y se creo una sesion cambiando el id de la sesion al nombre de usuario, redirijo a la persona a la pagina de ingreso ya que no quiero que entre.

header ("Location: pagina1.php");

// Si el archivo no existe, significa que es la primera vez que se esta ingresando al sistema con dicho nombre de usuario y contraseña entonces procedo a iniciar una sesion, a cambiarle el id colocandole como id el nombre de usuario, creo una variable de sesion y redirijo a la persona a la página principal de mi zona restringida llamada pagina4.php

}
else {
session_start();
session_id($usuario);
$_SESSION['autentificado']="SI";

header ("Location: ../area_segura/usuarios/pagina4.php");

}
?>

Por último,

En la pagina4.php imaginemos que tengo una mensaje de bienvenida: Hola! has ingresado en el área restringida. Con el detalle que al principio de todo he colocado un include de un script que me verifica si la persona que llego a esta pagina ha iniciado la variable de sesion "autentificado" y si el valor de la misma es "SI"....$_SESSION['autentificado']="SI";.. lo cual se hizo en pagina3.php... el código del include es: <?include ("verifica.php");?> y el codigo de verifica.php es el siguiente:

<?
session_start();

//COMPRUEBA QUE EL USUARIO ESTA AUTENTIFICADO
if ($_SESSION["autentificado"] != "SI") {
//si no existe, envio a la página de autentificacion
header("Location: ../../../seguridad/pagina1.php");
//ademas salgo de este script
exit();
}
?>

EL PROBLEMA EN SI ES QUE A PESAR DE QUE HE COMPROBADO DE QUE CUANDO ME VOY A CONECTAR POR PRIMERA VEZ CON UN LOGIN Y UN PASSWORD.. EFECTIVAMENTE SE ME CREA LA SESION, DE QUE EFECTIVAMENTE TOMA EL CAMBIO DE ID QUE LE HAGO Y DE QUE LA VARIABLE DE SESION auntentificado SE CREA.. AL COLOCAR EL LOGIN Y EL PASSWORD CAIGO EN LA MISMA PAGINA EN LA QUE ESTOY INTRODUCIENDO LOS DATOS pagina1.php Y NO PASA NADA.. NO LOGRO PASAR DE ALLI. Sin embargo.. cuando elimino la linea que le cambia el ID a la sesion.. todo funciona bien y logro entrar al área segura... pero evidentemente esto no me permite hacer lo que quiero hacer de no permitir el ingreso de dos personas con el mismo login y password al mismo tiempo.

HE HECHO Y PROBADO DE TODO Y NADA... NO SE QUE PASA... ES COMO SI AL CAMBIAR EL ID A LA SESION QUE INICIO.. EL CODIGO DE verifica.php NO PUDIESE VER LA VARIABLE autentificado QUE HA SIDO CREADA POR LO CUAL ME REDIRECCIONA A pagina1.php

Si algiuen se le ocurre qué es lo que puede estar pasando y cómo solucionarlo... se lo agradeceré enormemente.. ya estoy mentalmente agotado..

SALUDOS...
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 19:39.