Bueno .. si quieren salir de dudas pueden probar a desactivar el caché:
En la función header() tienen las cabeceras "no-caché" adecuadas para tal fin:
www.php.net/header
Pero, el problema es que en las páginas que redireccionas las tienes "libres" (si accedes por el URL directo también entrarías ..)
Es decir .. "tienes una puerta con un enorme candado y su llave .. pero no hay "muros" que eviten que pase rodeando la puerta .." (hoy me puse filosófico xDD).
El hecho de usar cookies o sesiones es para que estas las crees en el momento que autentificas a tu usuario correctamente (es válido) y de ahí a las N páginas que requieran autentificación (haber pasado por tu "login.php") tienen que verificar -siempre- la existencia de esas variables en tus cookies o sesiones.
Ejemplo básico (usando sesiones .. se asume propagaciónd el SID por cookies ..):
tu login.php:
Código PHP:
<?
if( $_POST['usuario']=="pepe" && $_POST['pass']=="yo"){
session_start();
// creo la variable de sesión ..
$_SESSION['usuario']=$_POST['usuario'];
header ("Location: pagina_restringida.php");
exit;
}
?>
// resto de pagina y tu formulario ..
Y en tu pagina_restringida.php
Código PHP:
<?
session_start();
if (!isset($_SESSION['usuario'])){
// Si no existe la variable de sesión .. lo redirecciono al login.php
header ("location: login.php");
exit;
}
// resto de tu actual página ..
Un saludo,