Usted tiene tres enfoques generales:
- almacenar la página anterior en la sesión;
- Almacenar la página como una variable GET; o
- Realice un redireccionamiento interno a la página de inicio de sesión.
(1) se ve algo como:
<?php
session_start();
if (!$_SESSION['userid']) {
$_SESSION['page'] = '/contact';
header('Location: /login');
exit;
}
...
?>
En conexión exitosa recuperar $_SESSION['page']
y redirigir.
(2) es similar, excepto que no hay una variable de sesión. En su lugar, tiene:
header('Location: /login?return=/contact');
para pasar la redirección. La página de inicio de sesión deberá incluirlo como un campo de formulario oculto en la página que presenta al usuario una solicitud de nombre de usuario y contraseña.
(3) es similar pero no redirige a una página diferente. En cambio, cada página puede ser una página de inicio de sesión. Si el usuario no está conectado, se presenta un formulario de inicio de sesión. La URL seguirá siendo "/ contacto". Cada página detectará y gestionará los intentos de inicio de sesión.
La ventaja de este método es una redirección externa menos y es más fácil manejar los formularios enviados. Con esto quiero decir que imagina que alguien llena un formulario en una de sus páginas y luego hace clic en enviar. El sistema ve que su inicio de sesión ha expirado. Si redirige al usuario a una página nueva y luego lo redirecciona de nuevo, es probable que deba volver a ingresar todos los campos del formulario. Si maneja el inicio de sesión implícitamente, puede incluir todos los campos de formulario como entradas ocultas y una vez que haya iniciado sesión, trátelo a la perfección como una presentación de la página original.
buena pregunta, y bienvenido a SO :) –
Buena pregunta que creo que muchos programadores necesitarán saber la respuesta. Gracias. – TopDeveloper