Foros > PHP: se me pierde la sesi?n PHP

  1. migue22

    Mensajes [1] - Enviado el Sabado 01 de Diciembre de 2007 a las 01:46hs

    Hola, tengo un problema con las sesiones y la verdad no encuentro qu? puede estar pasando... El Usuario ingresa correctamente (valida sus claves ) , empieza el recorrido por la p?gina correctamente, y de pronto de manera intempestiva se pierde la informaci?n de la sesi?n y lo saca de la navegaci?n que efectuaba!

    El php.ini en el servidor actualmente est? configurado as?:
    session.auto_start = 0 (en cada script llamo la funcion "session_start")
    session.use_trans_sid = 0 (estoy enviando manualmente en cada link el .SID)
    register_globals = On
    short_open_tag = On
    session.save_path = /tmp

    1) el ingreso al sitio WEB se hace as? en la p?gina ?login.php? desp?es de recibir por ?post? la informaci?n requerida:

    include_once (dirname(__FILE__). "/../nwlib/dbusuario.inc.php");

    if (isset($HTTP_POST_VARS)) {
    $usuario = new DBusuario();
    $usuario->id = 0;
    $usuario->login= $HTTP_POST_VARS['login'];
    $usuario->password = $HTTP_POST_VARS['password'];
    $usuario->connect();
    $usuario->verificarUsuario();

    // si el usuario existe, valida el ingreso!

    if ($usuario->id!=0) {
    session_start();
    $_SESSION['_userid']=$usuario->id;
    $redirect="pagina_principal.php?".SID;
    header("Location: ./$redirect");
    } else {
    ?>

    }
    }
    ?>

    2) En la ?pagina_principal.php? cargamos la informaci?n b?sica del usuario as?:
    session_start();

    //validamos que sea el Usuario que ingres?.

    if (!(isset($_SESSION['_userid']))) {
    ?>

    die();
    }

    //Traemos la informaci?n de su registro a partir de:

    include_once (dirname(__FILE__). "/../nwlib/dbusuario.inc.php");

    $usuario= new DBusuario();
    $usuario->connect();
    $usuario->id=$_SESSION['_userid'];
    $usuario->find ();
    ?>

    Hasta ?ste punto no hay problema, ac? es donde empieza:
    La ?p?gina_principal.php? ( y todas las visibles al usuario tienen en su parte superior un men? desplegable creado con Fireworks insertado en el PHP a manera de etiquetas CSS)

    Los links para navegar en ?stas etiquetas los tengo configurados as?:
    mm_menu_0828201440_0.addMenuItem("Ciudades HOMs Presenciales","location='cities.php?'");

    El link aparentemente funciona bien ya que ?ste trae correctamente la p?gina ?cities.php? (el c?digo es ?ste:)

    include_once (dirname(__FILE__). "/../nwlib/dbciudad.inc.php");
    include_once (dirname(__FILE__). "/../nwlib/dbpais.inc.php");
    include_once (dirname(__FILE__). "/../nwlib/dbusuariodata.inc.php");

    $usuariodata= new DBusuariodata();
    $usuariodata->connect();
    $usuariodata->usuarioid=$_SESSION['_userid'];
    $usuariodata->find();

    // Carga correctamente la informaci?n de las ciudades que el usuario tiene almacenada

    ?>

    //Una vez en cities.php puedo imprimir la informaci?n de la sesi?n mediante (echo .sessionid(); o echo $_SESSION['_userid'];)

    Desde ?sta ?cities.php? el usuario tiene b?sicamente tres opciones:
    a) Agregar ciudades, para o cual llamo la p?gina ?citiesresult.php? mediante un bot?n que env?a el siguiente formulario as?:


    //Ac? env?o manualmente el SID

    b) Borrar ciudades, para lo cual llamo la p?gina ?delcity.php? mediante un link escrito que env?a la informaci?n por GET as?:

    c) O continuar la navegaci?n a la siguiente p?gina de datos varios botones (dependiendo lo que usuario quiera hacer) que env?an el siguiente formulario as?:



    En la p?gina citiesquery.php se recibe la informaci?n por el metodo ?post?:
    session_start();
    //Sale del sitio WEB
    if (isset($HTTP_POST_VARS['sale'])) {
    header ("Location:logout.php");
    }
    //Regresa a la ?pagina_principal.php?
    if (isset($HTTP_POST_VARS['continua'])) {
    header ("Location: pagina_principal.php?".SID);
    }
    //contin?a la navegaci?n a la siguiente p?gina de datos. (
    Esta p?gina en su c?digo es igual a cities.php ( y en general a todas las de informaci?n del Usuario)
    if (isset($HTTP_POST_VARS['sigue'])) {
    header ("Location:tools.php?".SID);
    }
    ?>

    Tanto en la p?gina ?cities result.php? del punto a), como en la ?delcity.php? del punto b) y en la ?tools.php? al igual que se hizo en la ?p?gina_principal.php? se carga valida el acceso y se carga la informaci?n del Usuario mediante:

    if (!(isset($_SESSION['_userid']))) {
    ?>

    die();
    }

    //Traemos la informaci?n de su registro a partir de:

    include_once (dirname(__FILE__). "/../nwlib/dbusuario.inc.php");

    $usuario= new DBusuario();
    $usuario->connect();
    $usuario->id=$_SESSION['_userid'];
    $usuario->find ();
    ?>

    *EL PROBLEMA QUE TENGO ES QUE ?ALEATORIAMENTE? CUANDO ESTOY NAVEGANDO EL SITIO WEB EN CUALQUIERA DE LAS PAGINAS DE a), b) o c) INTEMPESTIVAMENTE PIERDE LA $_SESSION['_userid']; Y EJECUTA (NO UNA SINO VARIAS VECES (3, 4 Y HASTA 5 VECES) la segunda parte del script ?alert("Acceso no autorizado.");

    Ojal? aguien me ayude a detectar que problema se est? presentando o en el c?digo, on en la configuraci?n del php.ini o bien en la MANERA DE PROPAGAR EL .SID

  2. Fidoman

    Mensajes [3] - Enviado el Lunes 10 de Diciembre de 2007 a las 17:37hs

    Fijate en la configuracion del PHP (php.ini), las variables de Session tienen un tiempo de vida, Fijate de que este en 0 (significa que hasta que el explorardor no se reinicie sigue activa)

    Saludos


responder

Para poder responder a este tema tenes que ingresar. Si no tenes una cuenta podes registrarse gratis..

publicidad

API DE FACEBOOK
GOOGLE CALENDAR API
GOOGLE MAPS API