PHP: HTTP Basic - Log off

0 Cevap php

Bunu kurmak için olur nerede birisi bir istek gönderirse otomatik "başarılı oturumu" diyerek bir sayfa onları alacak "çıkış". Müşteri geri düğmesine basın veya Kısıtlı bir alana gitmek için çalışırsa, tekrar HTTP auth isteyecektir.

Ne kadar var bu:

example.com / / index.php kısıtlı:

<?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

Kullanıcı başarılı ziyaret example.com/logout.php example.com/restricted/index.php?logout erişildiğinde ise. Kullanıcı ancak rastgele şeyler geri dönmek için çalıştığında, bazen bazen bir döngü içinde kimlik soran tutacak (?), (?) Iki kez HTTP kimlik soracak ve bazen bana doğru geri dönelim sanki Ben daha önce hiç girmedi.

Ben oturumları nasıl yeni duyuyorum ama benim anlayış şudur: / kişi valide olduğunda ise, her oturum kapatma ile bir GET isteği alırsa, o olacak ... oturum true değeri ile giriş denir bunu bir değişken saklar o oturum değişkeni silmek ve geri endeksine tıkladığınızda o zaman ... Neden logout.php geri dönmek o oturum [giriş] sözde ayarlı değil, kimlik doğrulama, sormadan beni geri izin verir.

Bu PHP kodu için herhangi bir gelişme takdir edilmektedir. Ben HTTP Basic kullanmak gerekir ve SQL birleştirmek gerektiğini biliyorum, ama meh. Bu geçici bir çözümdür.

Düzenleme: talimatlar bir örnek de dahil edilirse ben MySQL ile bir çözümü kabul edecektir. (Henüz) hiçbir MySQL veya PHP veritabanı bilgisine sahip

0 Cevap