Lo configuraría donde si alguien envía una solicitud de "cierre de sesión" automáticamente los llevará a una página que dice "cerrar la sesión exitosamente". Si el cliente intenta presionar el botón Atrás o ir al área restringida, volverá a solicitar la autenticación HTTP.PHP: HTTP Basic - Cerrar sesión
Lo que tengo hasta ahora es la siguiente:
example.com/restricted/index.php:
<?php
session_start();
if(isset($_GET['logout']))
{
unset($_SESSION["login"]);
header("location: ../logout.php");
exit;
}
if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) || !isset($_SESSION["login"]))
{
header("HTTP/1.0 401 Unauthorized");
header("WWW-authenticate: Basic realm=\"Tets\"");
header("Content-type: text/html");
$_SESSION["login"] = true;
// Print HTML that a password is required
exit;
}
?>
// The rest of the page is then displayed like normal
El usuario exitosas visitas example.com/logout.php si ejemplo. se accede a com/restricted/index.php? logout. Cuando el usuario intenta retroceder sin embargo suceden cosas al azar, a veces pedirá autenticación HTTP dos veces (???), a veces seguirá pidiendo autenticación en un bucle (?) Y, a veces, me dejará volver como si Nunca me desconecté
Soy nuevo en cómo funcionan las sesiones pero mi entendimiento es el siguiente: si/cuando la persona es validada, almacena una variable en su sesión llamada inicio de sesión con un valor verdadero ... si recibe una solicitud GET logout, luego eliminará esa variable de sesión y volverá a logout.php ... ¿Por qué entonces cuando vuelva a hacer clic en el índice me permitirá volver a entrar sin pedir autenticación, cuando la sesión [login] supuestamente no está configurada? .
Se aprecia cualquier mejora de este código PHP. Sé que no debería usar HTTP Basic y debería incorporar SQL, pero meh. Esta es una solución temporal.
Editar: Aceptaré una solución con MySQL si se incluye un ejemplo con instrucciones. No tengo conocimiento de base de datos MySQL o PHP (aún)
Sin sesiones, su mejor opción es cambiar la cadena del reino básico. – stillstanding
¿No son tantos los esfuerzos solo por una solución temporal? –
@stillstanding el principal problema es CUÁNDO enviarlo. Cómo distinguir una llamada de un usuario conectado y una llamada de una sesión cerrada :) –