Foros del Web » Programando para Internet » PHP »

SESSION: Como saber que ha caducado

Estas en el tema de SESSION: Como saber que ha caducado en el foro de PHP en Foros del Web. Estimados amigos, He creado una aplicacion con session_start(), pero quiero conotrolar cuando el usuario le da boton atras del browser sale el mensaje la Pagina ...
  #1 (permalink)  
Antiguo 17/07/2004, 00:47
 
Fecha de Ingreso: julio-2004
Mensajes: 64
Antigüedad: 13 años, 5 meses
Puntos: 0
SESSION: Como saber que ha caducado

Estimados amigos,

He creado una aplicacion con session_start(), pero quiero conotrolar cuando el usuario le da boton atras del browser sale el mensaje la Pagina a Caducado puedo controlarlo y evitar que el usuario se vaya para la pagina de atras?.

Gracias
  #2 (permalink)  
Antiguo 17/07/2004, 15:34
 
Fecha de Ingreso: julio-2004
Ubicación: Puerto Vallarta, Jalisco, Mexico
Mensajes: 186
Antigüedad: 13 años, 5 meses
Puntos: 0
yo tambien estoy buscando una manera de hacer esto, mas no lo he probado, pero tal vez on un meta Expire

<META HTTP-EQUIV="expires" CONTENT="Fri, 31 Dec 1999 23:59:59 GMT">

podrias cambiar la fecha a cierto dia unos 90 minutos adelante, o segun lo que quieres que dure ese pagina.

de nuevo, no estoy seguro si funciona, pero puedes por lo menos empezar por ahi

la manera como yo lo resolvi es poniendo en la pagina un boton de regresar, y usando la direccion exacta de la pagina con sesiones, despues en todass las paginas checo primero las sesiones para ver si existen y de ahi muestro lo necesario segun estas sesiones.
__________________
Shanti Castillo G.

Última edición por Shantic; 17/07/2004 a las 15:38
  #3 (permalink)  
Antiguo 17/07/2004, 18:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
El tema de "pagina caducada" .. se proboca por qué PHP cuando en el uso de sesiones envia ciertas cabeceras de control del caché al cliente (navegador).

Por defecto lo define: (php.ini)
Cita:
; Set to {nocache,private,public,} to determine HTTP caching aspects
; or leave this empty to avoid sending anti-caching headers.
session.cache_limiter = nocache
Y se puede modificar en tiempo de ejecución de tus scripts vía la función:
session_cache_limiter() por si no tienes acceso al PHP.ini de tu servidor.

Ese "nocache" podría sustituirse por un "public" para evitar esos problemas (en teoría .. : revisen los comentarios de los usuarios de la función: www.php.net/session_cache_limiter)

Un saludo,
  #4 (permalink)  
Antiguo 12/08/2004, 11:13
Avatar de Rocket  
Fecha de Ingreso: diciembre-2001
Ubicación: Santiago, Chile
Mensajes: 272
Antigüedad: 16 años
Puntos: 4
no entendi muy bien...

Hola, cluster

no te entendi muy bien eso de como caducar la pagina y necesito hacerlo para un proyecto en donde se llena un formulario y vuelve atras le deberia salir "la pagina ha caducado"

probe con el session_cache_limiter() y este codigo ke encontre en una pagina pero igual lo muestra

me puedes ayudar por fa...
  #5 (permalink)  
Antiguo 12/08/2004, 11:21
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. como estás usando dicha función?

Hay un gran detella sobre el orden que tienes que usarla .. se usa -antes- de tu session_start() .. y no despues como tal vez lo estás haciendo

Lee también sobre session_cache_expire() usado en conjunto con session_cache_limiter()
http://www.php.net/manual/en/functio...che-expire.php

Un saludo,
  #6 (permalink)  
Antiguo 12/08/2004, 11:37
Avatar de Rocket  
Fecha de Ingreso: diciembre-2001
Ubicación: Santiago, Chile
Mensajes: 272
Antigüedad: 16 años
Puntos: 4
sip, lo tenia despues del session_start() pero sigue sin funcionar. este es el codigo...

<?php
session_cache_limiter('nocache');
session_cache_expire(0);

require_once('../Connections/hp_formula1.php'); ?>

ob_start();
session_start();

//redireccionar si no existe la sesion
if($_SESSION['usr_rut']==""){
header("Location: index.php");
exit;
}
?>
.........

si es la primera vez ke se entra al formulario lo muestra, pero despues de ingresan el formulario y vuelven atras no deberia mostrarlos... tambien puedo usar sesiones pero kiero ver esta forma primero, es como mas elegante ke muestre el mensaje de ke la pagina ha caducado...
  #7 (permalink)  
Antiguo 12/08/2004, 11:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Para que usas:

ob_start();

Eso controla el buffer de salida de PHP .. si lo haces por qué por encima de las funciones de sesiones tienes "Salida" (HTML,etc) .. reordena tu código primero.

Es recomendable que uses "isset()" en lugar de == '' ...

//redireccionar si no existe la sesion
if(!isset($_SESSION['usr_rut'])){
header("Location: index.php");
exit;
}
?>

Por lo demás .. no sé donde le das valor a tu $_SESSION['usr_rut'] ..

Un saludo,
  #8 (permalink)  
Antiguo 12/08/2004, 11:48
Avatar de Rocket  
Fecha de Ingreso: diciembre-2001
Ubicación: Santiago, Chile
Mensajes: 272
Antigüedad: 16 años
Puntos: 4
el ob_start lo puse por si acaso, para unas pruebas ke hice con el header pero se lo saco

y al principio use el isset() pero no se por ke no me funcioo asi ke corte por lo sano y asi me funciona y esa sesion usr_rut viene de la pagina anterior...la pagina tiene 3 formularios y si no esta el primero no deberia hacer el 2º ni el 3º... por eso uso esa sesion

saludos
  #9 (permalink)  
Antiguo 12/08/2004, 11:58
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mm bueno .. no sé como usastes el isset() .. pero fijate bien que lo estoy "negando" con el !. Se trata de hacer el condicional tipo "si no está definida tal variable" .. redireccionas y terminas la ejecución del script.

Ahora .. si dices que en el primer fomulario .. mejor dicho: procesado de ese formulario (script PHP que toma esos datos) .. creas tu "urs_rut" .. y simpre validas esa variable (que será de mismo valor supongo) .. tu validación no va hacer lo que esperas .. desde el primer formulario podrás moverte por los N que tengas. Deberías usar una variable tipo contador para hacer validaciones tipo:

En el primer script de proceso . .generas:

$_SESSION['contador_formularios'] = 1;


En el 2º formulario validas que venga del anterior:

if ($_SESSION['contador_formularios'] != 1){
header ("loction: index.php");
exit;
}
<form .....>
</form>

Y así con los sucesivos (y tambíen en el script de proceso de los respectivos formularios .. ).

Un saludo,
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 10:36.