Vorrei impostarlo dove, se qualcuno invia una richiesta "logout", li porterà automaticamente a una pagina che dice "logout riuscito". Se il cliente tenta di premere il pulsante Indietro o accedere all'area riservata, richiederà di nuovo l'autenticazione HTTP.PHP: HTTP Basic - Disconnetti
Quello che ho finora è questo:
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
l'utente visita di successo example.com/logout.php se esempio. it/restricted/index.php? logout è accessibile. Quando l'utente tenta di tornare indietro, tuttavia accadono cose casuali, a volte chiederà l'autenticazione HTTP due volte (???), a volte continuerà a chiedere l'autenticazione in un ciclo (?) Ea volte mi consentirà di tornare indietro come se Non ho mai disconnesso.
Sono nuovo su come funzionano le sessioni, ma la mia comprensione è questa: Se/quando la persona viene convalidata, memorizza una variabile nella sua sessione chiamata login con un valore true ... se ottiene una richiesta GET con logout, cancellerà quella variabile di sessione e tornerà a logout.php ... Perché è allora che quando faccio clic sull'indice mi consentirà di rientrare senza chiedere l'autenticazione, quando la sessione [login] non è presumibilmente impostata .
Qualsiasi miglioramento a questo codice PHP è apprezzato. So che non dovrei usare HTTP Basic e dovrei incorporare SQL, ma meh. Questa è una soluzione temporanea.
Modifica: accetterò una soluzione con MySQL se è incluso un esempio con istruzioni. Non sono a conoscenza di database MySQL o PHP (ancora)
Senza sessioni, la soluzione migliore è cambiare la stringa di base. – stillstanding
Non sono tanti gli sforzi per una soluzione temporanea? –
@stillstanding il problema principale è QUANDO inviarlo. Come distinguere una chiamata da un utente connesso e una chiamata da una disconnessa :) –