se me pierde la sesi贸n PHP

migue22
01 de Diciembre del 2007
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:

<?PHP
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 {
?>
<script>
alert ("Clave Erronea! Int茅ntelo de Nuevo.");
history.back();
</script>
<?PHP
}
}
?>

2) En la 聯pagina_principal.php聰 cargamos la informaci贸n b谩sica del usuario as铆:
<?PHP
session_start();

//validamos que sea el Usuario que ingres贸.

if (!(isset($_SESSION['_userid']))) {
?>
<script language="JavaScript" type="text/javascript">
alert("Acceso no autorizado.");
history.back()
</script>
<?PHP
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&nbsp;HOMs&nbsp;Presenciales","location='cities.php?<?=SID?>'");

El link aparentemente funciona bien ya que 茅ste trae correctamente la p谩gina 聯cities.php聰 (el c贸digo es 茅ste:)

<?PHP
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铆:
<form action="citiesresult.php" method="post" name="ciudades" >
//Ac谩 env铆o manualmente el SID
<input type="hidden" name="SID" value="<?=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铆:
<a href='delcity.php?usuarioid=<?PHP echo $usuariodata->usuarioid; ?>&ciudadid=<?PHP echo $ciudad->id ?>&<?=SID?>' ">
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铆:
<form action="citiesquery.php" method="post">
<input type="hidden" name="SID" value="<?=SID?>" >

En la p谩gina citiesquery.php se recibe la informaci贸n por el metodo 聯post聰:
<?PHP
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']))) {
?>
<script language="JavaScript" type="text/javascript">
alert("Acceso no autorizado.");
history.back()
</script>
<?PHP
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