Codeigniter – Obligar a cargar página sin utilizar caché

En varias ocasiones, necesitaremos que una página no se guarde en caché. El tipo ejemplo es cuando vamos de una página a otra, y pulsamos posteriormente el botón Atrás del navegador. Este problema surge en muchísimas ocasiones por temas de loguinación, pasarelas de pago… vamos:

El problema del botón atrás del navegador y la seguridad

En Codeigniter podemos utilizar un método que obliga a que obliguemos a cargar siempre del servidor, sin utilizar la caché del navegador:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class MiControlador extends CI_Controller {
...
public function verpaginasincache(){
...
// En el controlador, antes de cargar el view dentro de una función
$data["mensaje"]= "Un ejemplo para que el navegador no utilice caché y obligue siempre a cargar la página desde el servidor";
// Evitamos cache para que no puedan hacer botón atrás desde la siguiente página
$this->output->set_header('Expires: Sat, 26 Jul 2000 05:00:00 GMT');
$this->output->set_header('Cache-Control: no-cache, no-store, must-revalidate, max-age=0');
$this->output->set_header('Cache-Control: post-check=0, pre-check=0', FALSE);
$this->output->set_header('Pragma: no-cache');
// Cargamos la vista en cuestión
$this->load->view('lavistasincache', $data);
...
}
...
}

De esta manera, cada vez que llamemos a esta función del controlador, obliga a cargarlo desde el servidor y no utilizará la caché del navegador. Para ello, hemos utilizado las función set_header de la librería Output, que cambia los headers de la página comunicando al navegador que no las guarde.

Información relacionada

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*