Foros del Web » Programando para Internet » PHP »

Cache que no expira.....

Estas en el tema de Cache que no expira..... en el foro de PHP en Foros del Web. Hola a todos tengo mi scrip que envia datos a una tabla, pero me doy cuenta que aun cuando he destruido la sesion, con el ...
  #1 (permalink)  
Antiguo 09/12/2005, 11:02
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 19 años
Puntos: 0
Cache que no expira.....

Hola a todos tengo mi scrip que envia datos a una tabla, pero me doy cuenta que aun cuando he destruido la sesion, con el boton de "regresar" vuelve a cargarse la página (por consiguiente enviando datos repetidos a la tabla), he puesto lo siguiente al inicio de mi index.php:

Código PHP:
<?php
session_start
();
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
// siempre modificado
header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
// HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0"false);
// HTTP/1.0
header("Pragma: no-cache");
?>
y al parecer funciona, pero si regreso muchas veces, hasta la página de inicio. Me sale la ventana de envío de POSTdata y vuelve a generar la página que envia los datos a la tabla.

Por si acaso, todas las páginas (inclusive la de registro) pasan por el index.php

y para salir, envío a una página end.php
Código PHP:
<?php
$_SESSION
=array();
session_destroy();
?>
<h3 align="center">SU SESIÓN HA TERMINADO</h3>
<p>En unos momentos usted regresará a la página de registro....</p>
<p>Si usted no desea esperar haga click <a href="?mod=home"><strong>aquí</strong></a></p>
<?php
exit();
?>
Que tengo que poner para que expire el cache para siempre???
__________________
Mi blog

Última edición por Galled; 09/12/2005 a las 11:09
  #2 (permalink)  
Antiguo 09/12/2005, 11:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
En tu end.php realmente no estás destruyendo la sesión .. no usastes:

Código PHP:
Session_start();
$_SESSION=array();
session_destroy(); 
Por lo menos te faltaba el session_start()

más info:
http://www.php.net/manual/en/functio...on-destroy.php

El control del caché de las sesiones lo puedes gestionar con:
session_cache_limiter()
(a un valor como "private" por ejemplo) ..

Un saludo,
  #3 (permalink)  
Antiguo 09/12/2005, 11:42
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 19 años
Puntos: 0
No entendi lo del control del caché..... como hago eso de ponerle un valor de "private"??

asi??
Código PHP:
session_cache_limiter('private');
$cache_limiter session_cache_limiter(); 
si es así en donde lo pongo???

Ah una cosilla, el end.php tambien pasa por el index.php (mediante includes), porque mi index.php tambien tiene esto (que lo saqué de la programación modular de Webstilo):

Código PHP:
<?php
session_start
();
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
// siempre modificado
header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
// HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0"false);
// HTTP/1.0
header("Pragma: no-cache");
/* Se establecen las variables mas importantes de SESION para que al inicio
de cada página ellas retornen a un valor vacío*/
?>
<?php

// Primero incluimos el archivo de configuración
include('conf.php');

/** Verificamos que se haya escogido un modulo, sino
* tomamos el valor por defecto de la configuración.
*/
if (!empty($_GET['mod']))
    
$modulo $_GET['mod'];
else
    
$modulo MODULO_DEFECTO;

/** También debemos verificar que el valor que nos 
* pasaron, corresponde a un modulo que existe, caso
* contrario, cargamos el modulo por defecto
*/
if (empty($conf[$modulo]))
        
$modulo MODULO_DEFECTO;

/** Ahora determinamos que archivo de Layout tendrá
* este módulo, si no tiene ninguno asignado, utilizamos
* el que viene por defecto
*/
if (empty($conf[$modulo]['layout']))
        
$conf[$modulo]['layout'] = LAYOUT_DEFECTO;

include(
'scp_p900.php');
$conectar=@ora_logon($_SESSION['iusuario']."@bdtest",$_SESSION['password']);
if(
$conectar)
{
if(!(
$modulo==adios))    {
echo 
'Usted se encuentra registrado. Su usuario es: <strong>'.$_SESSION['iusuario'].'</strong>';
$op=ora_open($conectar);}
else
                        {
$_SESSION = array();
                        }
}
else{
//echo "NO TE HAS CONECTADO con el INDEX!!!!!!!!";
$modulo MODULO_DEFECTO;
    }
/** Finalmente, cargamos el archivo de Layout que a su vez, se
* encargará de incluir al módulo propiamente dicho. si el archivo
* no existiera, cargamos directamente el módulo. También es un
* buen lugar para incluir Headers y Footers comunes.
*/
$path_layout LAYOUT_PATH.'/'.$conf[$modulo]['layout'];
$path_modulo MODULO_PATH.'/'.$conf[$modulo]['archivo'];

if (
file_exists($path_layout))
    include( 
$path_layout );
else
    if (
file_exists$path_modulo ))
        include( 
$path_modulo );
    else
        die(
'Error al cargar el módulo <b>'.$modulo.'</b>. No existe el archivo <b>'.$conf[$modulo]['archivo'].'</b>');
?>
con algunos toques mios, claro
__________________
Mi blog
  #4 (permalink)  
Antiguo 09/12/2005, 13:41
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 19 años
Puntos: 0
Bueno, he corregido el index.php asi:

Código PHP:
<?php
session_cache_limiter 
("private");
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
// siempre modificado
header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
// HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0"false);
// HTTP/1.0
header("Pragma: no-cache");
session_start();
?>
Y bueno, en firefox, regresando (con el boton Back) a la "primera aparición" de la página y luego dando adelante (Go fordward one page) ingresa sin necesidad de darle clave!!! y lo peor de todo es que reacciona como si nada!!! que esta pasando??
__________________
Mi blog
  #5 (permalink)  
Antiguo 09/12/2005, 13:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Revisa los comentarios de los usuarios de:

www.php.net/session_cache_expire
y
www.php.net/session_cache_limiter

Un saludo,
  #6 (permalink)  
Antiguo 12/12/2005, 11:25
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 19 años
Puntos: 0
Gracias Cluster. Pero aún tengo algunos problemillas, cuando regreso a la primera página vista...
__________________
Mi blog
  #7 (permalink)  
Antiguo 15/04/2011, 17:36
 
Fecha de Ingreso: abril-2011
Mensajes: 1
Antigüedad: 13 años
Puntos: 0
Respuesta: Cache que no expira.....

soy super nueva een esto estaba tratando de aser ke mi paguina no buelba a la anterior con el boton atras del navegador y encontre esto pero me gustaria saber para ke es cada cosa si alguien me lo pudiera decir.....
lo aplique pero funciona medio raro o solo yo no lo entiendo ...

header( 'Expires: Mon, 26 Jul 1997 05:00:00 GMT' );
header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' );
header( 'Cache-Control: no-store, no-cache, must-revalidate' );
header( 'Cache-Control: post-check=0, pre-check=0', false );
header( 'Pragma: no-cache' );
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:52.