Foros del Web » Programando para Internet » PHP »

Variable global con $_SESSION no mantiene el valor asignado

Estas en el tema de Variable global con $_SESSION no mantiene el valor asignado en el foro de PHP en Foros del Web. En un archivo script php asigno un valor a la variable de sesion : $_SESSION["autentificado"]="SI"; Luego, en otro script php se realiza una condición : ...
  #1 (permalink)  
Antiguo 22/08/2007, 07:16
 
Fecha de Ingreso: octubre-2005
Mensajes: 778
Antigüedad: 18 años, 6 meses
Puntos: 1
Variable global con $_SESSION no mantiene el valor asignado

En un archivo script php asigno un valor a la variable de sesion :

$_SESSION["autentificado"]="SI";

Luego, en otro script php se realiza una condición :

If ($_SESSION["autentificado"]!= "SI")
{
....
}

Pero esta variable de sesión, a pesar de habersele asignado el valor "SI" anteriormente, siempre pierde el valor al estar en otro archivo php, tiene valor vacío " ". Porqué esto? Acaso no es una variable global de esta manera ?

Parece ser que el valor se pierde al asignarse en un script, y luego se verifico en un tercero. O sea, al pasar a un segundo script se mantiene el valor, y al pasar a un tercero se pierde el valor de la variable de sesión.

Otra cosa, primero valido la entrada del usuario, y al chequearlo entro en un menu de opciones que primeramente también chequeo el tiempo transcurrido sin uso por el usuario. Muestra el menu, y en milésimas de segundos el programa vuelve al index.php para pedir la clave de entrada al sistema.

Este es mi script :

verificar.php :
$_SESSION["Num_Sesion"]="0";
include("chequear_sesiones.php");
echo "<META HTTP-EQUIV='Refresh' CONTENT='0;url=http://www.procesadoras.com/menu.php'>";


chequear_sesiones :
if ($_SESSION["Num_Sesion"]=="1")
{
if ($_SESSION["autentificado"] != "SI")
{
// Si no está logueado se envia a la página de inicio de sesión
echo "<META HTTP-EQUIV='Refresh' CONTENT='0; url=http://www.procesadoras.com/acceso.php'>";
}
else
{
//Sino se calcula el tiempo transcurrido
$fecha_Guardada = $_SESSION["ultimoAcceso"];
$ahora = date("Y-n-j H:i:s");
$tiempo_transcurrido = (strtotime($ahora)-strtotime($fecha_Guardada));

// Se compara el tiempo transcurrido
if ($tiempo_transcurrido >= 600 )
{
// Pasaron 10 minutos o más
session_destroy();
// Se destruye la sesión
header("Location: acceso.php");
// Se envia a la página de autentificación
}
else
{
$_SESSION["ultimoAcceso"] = $ahora;
}
}
}
else
{
$_SESSION["autentificado"]="SI";
$_SESSION["ultimoAcceso"]=date("Y-n-j H:i:s");
}



menu.php :
$_SESSION["Num_Sesion"]="1";
/*
echo "Autentificado ".$_SESSION["autentificado"];
If ($_SESSION["autentificado"]!= "SI")
{ */
include("chequear_sesiones.php");
// }
echo "<img src='http://www.procesadoras.com/ME_zcojedes_2007.jpg'>";
  #2 (permalink)  
Antiguo 22/08/2007, 07:50
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Variable global con $_SESSION no mantiene el valor asignado

Para usar variables de session necesitas FORZOSMENTE llamar a session_start() al inicio de los scripts que ocupen sessiones.

Saludos.
  #3 (permalink)  
Antiguo 23/08/2007, 06:52
 
Fecha de Ingreso: octubre-2005
Mensajes: 778
Antigüedad: 18 años, 6 meses
Puntos: 1
Re: Variable global con $_SESSION no mantiene el valor asignado

Hago una llamada al script menu.php así :

echo "<META HTTP-EQUIV='Refresh' CONTENT='0; url=http://www.procesadoras.com/menu.php'>";

Será que de esta manera el valor de las variables de sesión se pierde ?

Aún así agregué la función "session_start();" al comienzo de cada script.
  #4 (permalink)  
Antiguo 23/08/2007, 08:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Variable global con $_SESSION no mantiene el valor asignado

Puede ser que no estes pasando el SESSION ID (SID), que forma lo transfieres? via cookies? o via URL?

Saludos.
  #5 (permalink)  
Antiguo 23/08/2007, 10:10
 
Fecha de Ingreso: octubre-2005
Mensajes: 778
Antigüedad: 18 años, 6 meses
Puntos: 1
Re: Variable global con $_SESSION no mantiene el valor asignado

Cita:
Iniciado por GatorV Ver Mensaje
Puede ser que no estes pasando el SESSION ID (SID), que forma lo transfieres? via cookies? o via URL?

Saludos.
Ok a lo mejor es por eso que no recibe el valor de la variable de sesión.

El problema ocurre es en archivo menu.php, al cual llamo asi de esta manera :

echo "<META HTTP-EQUIV='Refresh' CONTENT='0; url=http://www.procesadoras.com/menu.php'>";

De que manera puedo llamar a este archivo y reciba el valor de la variable? O también, como pasar el Session ID a través de esta instrucción ?
  #6 (permalink)  
Antiguo 23/08/2007, 10:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Variable global con $_SESSION no mantiene el valor asignado

Puedes hacerlo asi:
Código PHP:
echo "<META HTTP-EQUIV='Refresh' CONTENT='0; url=http://www.procesadoras.com/menu.php?" SID "'>"
Saludos.
  #7 (permalink)  
Antiguo 24/08/2007, 07:27
 
Fecha de Ingreso: octubre-2005
Mensajes: 778
Antigüedad: 18 años, 6 meses
Puntos: 1
Re: Variable global con $_SESSION no mantiene el valor asignado

Tamoco funciona, muestra el menu.php y en milesimas de segundos vuelve al inicio del programa acceso.php donde se piden los datos de validación del usuario.

Este es el contenido del script menu.php :
session_start();
$_SESSION["Num_Sesion"]="1";


// echo "Autentificado ".$_SESSION["autentificado"];

If ($_SESSION["autentificado"]!= "SI")
{
include("chequear_sesiones.php");
}
echo "<img src='http://www.procesadoras.com/ME_zcojedes_2007.jpg'>";
echo "<img src='http://www.procesadoras.com/banner_cojedes.jpg'>";
echo "<TABLE WIDTH='100%' style='background-color: #075600;'><TR><TD></TD></TR><TR><TD></TD></TR></TABLE>";
setlocale(LC_ALL,'es_VE');
echo strftime("&nbsp; %A %#d de %B del %Y");
echo "<div align='center'><BR><B>DIVISI&Oacute;N DE ADMINISTRACI&Oacute;N Y SERVICIOS</B></div>";
echo "<BR>";

echo "<TABLE><TR><TD>";
echo "<TABLE width='160' style='background-color: #eeeeee; font-size: 13px; font-face: Tahoma;'>";
echo "<th style='width: 160px; text-align: center; font-size: 12px; font-face: Tahoma; color:#ffffff; background: #006699;'>Opciones</th><tr><td width='160'>";

echo "<A href='http://www.procesadoras.com/registrar.php'>Registrar</A></td></tr>";

echo "<tr><td><A href='http://www.procesadoras.com/informe.php'>Reporte</A></td></tr>";

echo "</table></td>";

echo "<td valign='top' align='center' width='450'>";

echo "</TD></TR></TABLE>";

No entiendo esto, si muestra el contenido del menu, y valida lo que hay en el archivo chequear_sesiones.php, porque se devuelve a acceso.php después de mostrar todas las instrucciones de menu.php y no antes, o sea, cuando valida lo que hay en chequear_sesiones.php?

Digo esto porque devería devolverse a acceso.php en la instrucción de chequear_sesiones.php asi :

session_start();
if ($_SESSION["Num_Sesion"]=="1")
{
if ($_SESSION["autentificado"] != "SI")
{
// Si no está logueado se envia a la página de inicio de sesión
echo "<META HTTP-EQUIV='Refresh' CONTENT='0; url=http://www.procesadoras.com/acceso.php'>";
}
else
{..

Bueno, pondré una condición en menu.php para que no lo muestre en caso de que si este validado el usuario, asi :

If ($_SESSION["autentificado"]!= "SI")
{
include("chequear_sesiones.php");
}

if ($_SESSION["autentificado"]== "SI")
{
echo "Mostrar menu de opciones";
...
}
  #8 (permalink)  
Antiguo 29/08/2007, 15:09
 
Fecha de Ingreso: octubre-2005
Mensajes: 778
Antigüedad: 18 años, 6 meses
Puntos: 1
Re: Variable global con $_SESSION no mantiene el valor asignado

Probé llamando el archivo menu.php scon include :

include("menu.php");

Y recibe el valor de la variable de sesión $_SESSION["autentificado"], que la primera vez que entra al sistema debe ser "SI" :

{
$_SESSION["autentificado"]="SI";
$_SESSION["ultimoAcceso"]=date("Y-n-j H:i:s");
}

Porqué con el comando echo "<META HTTP-EQUIV='Refresh' CONTENT='0; url=http://www.procesadoras.com/menu.php'>"; no enviael valor de dicha variable ?
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:12.