Je voudrais le configurer où si quelqu'un envoie une demande "déconnexion", il les emmènera automatiquement à une page disant "déconnexion réussie". Si le client essaie d'appuyer sur le bouton de retour ou d'accéder à la zone restreinte, il demandera de nouveau l'authentification HTTP.PHP: HTTP Basic - Déconnectez-vous
Ce que j'ai à ce jour est la suivante:
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
Les visites réussies utilisateur de example.com/logout.php~~number=plural si exemple. com/restricted/index.php? logout est accédé. Quand l'utilisateur essaye de revenir en arrière cependant des choses aléatoires arrivent, parfois il demandera l'authentification HTTP deux fois (???), parfois il continuera à demander l'authentification dans une boucle (?) Et parfois il me laissera retourner juste comme si Je ne me suis jamais déconnecté. Je suis nouveau dans la façon dont les sessions fonctionnent mais ma compréhension est la suivante: Si/quand la personne est validée, elle stocke une variable dans sa session appelée login avec une valeur true ... si elle reçoit une requête GET avec déconnectez-vous, il va alors supprimer cette variable de session et revenir à logout.php ... Pourquoi est-ce alors quand je clique de nouveau à l'index me laissera-t-il me revenir sans demander l'authentification, quand la session [login] n'est pas supposée .
Toute amélioration de ce code PHP est appréciée. Je sais que je ne devrais pas utiliser HTTP Basic et devrait incorporer SQL, mais meh. Ceci est une solution temporaire.
Editer: Je vais accepter une solution avec MySQL si un exemple avec des instructions sont inclus. Je ne connais pas de base de données MySQL ou PHP (encore)
Sans sessions, le mieux est de changer la chaîne de domaine de base. – stillstanding
N'est-ce pas tant d'efforts pour une solution temporaire? –
@stillstanding le problème principal est QUAND l'envoyer. Comment distinguer un appel d'un utilisateur connecté et un appel d'un utilisateur déconnecté :) –