log-out giriş Sistemi için php de çalışmıyor

5 Cevap

i am implementing a log-in system, i am sure a lot of you know what it is, i use sessions to store the user's ID, and check it if he access a page that needs the user to be logged in.
But my problem is when the user clicks the log-out anchor, nothing happens i still can access the other pages as long as the current page is open.
here is the code is use:

<?
unset($_SESSION["ID"]);
session_destroy();
header('location: ../Home/index.php');
?>

bu yüzden herkes yardımcı olabilir. şimdiden teşekkürler.

5 Cevap

Sen session_destroy() önce session_start() yapmanız gerekir.

Bunu yapmazsanız, PHP, yok etmeye çalışıyorlar oturum hiçbir fikri yok.

But my problem is when the user clicks the log-out anchor, nothing happens

A lot of things happens !

  1. Eğer arka size oturum açma sayfasına erişen sonra önceki düğmesi ile geri gitmek için çalışıyorsun?

  2. Bir kullanıcı görüntülemek çalıştığınızda size sayfası gerçekten bir oturum için kontrol ediyoruz?

  3. Eğer sayfanın önbelleğe alınmış sürümünü görüntüleniyor DEĞİLDİR emin misiniz?

  4. PHP oturumları dosyaları kontrol ettin de silinir? (Belki izin sorunları can oluşur)

  5. Yerleşim başlığı sözdizimini denetleyin, RFC2616 14.30 diyor:

The Location response-header field is used to redirect the recipient to a location other than the Request-URI for completion of the request or identification of a new resource. For 201 (Created) responses, the Location is that of the new resource which was created by the request. For 3xx responses, the location SHOULD indicate the server's preferred URI for automatic redirection to the resource. The field value consists of a single absolute URI.

   Location       = "Location" ":" absoluteURI

Deneyin:

var_dump($_SESSION);

Sayfanızın her günü, gerçekten ne olur, görmek için.

O da oturum çerezi silmek zorunda muhtemeldir:

unset($_SESSION["ID"]);
if (isset($_COOKIE[session_name()])) {
    setcookie(session_name(), '', time()-42000, '/');
}
session_destroy();
//...

Çıkış sayfada aşağıda gibi olmalıdır

<?php
    session_start()
    unset($_SESSION["ID"]);
    session_destroy();
    header('Location: http://example.com/home');
?>

Ve bir giriş kullanıcı olmadan kısıtlamak istediğiniz diğer sayfalarda. Her sayfada aşağıdaki kodu yazmak gerekir:

<?php
    session_start()
    if(!isset($_SESSION["ID"]) || empty($_SESSION["ID"])) {
        // redirect to login page
        header('Location: http://example.com/login');
    }
?>