2017-08-07 75 views
0

我在用戶註銷其帳戶時銷燬會話時遇到問題。註銷後,當我瀏覽任何頁面,限制爲用戶在登錄前不能訪問,我可以訪問該頁面,但如果我在註銷後關閉瀏覽器,然後嘗試訪問我無法訪問的頁面。請解決我的問題,以便用戶在註銷後即使沒有關閉瀏覽器也無法訪問這些頁面。這是我的註銷和銷燬會話的代碼。銷燬會話中的問題

 <?php 
    // Initialize the session. 
    // If you are using session_name("something"), don't forget it now! 
     if(isset($_POST['logout'])){ 
     session_start(); 

     // Unset all of the session variables. 
      $_SESSION = array(); 
      $_SESSION["Alogin"] = ""; 

     // If it's desired to kill the session, also delete the session 
      cookie. 
    // Note: This will destroy the session, and not just the session data! 
     if (ini_get("session.use_cookies")) { 
     $params = session_get_cookie_params(); 
     setcookie(session_name(), '', time() - 42000, 
     $params["path"], $params["domain"], 
     $params["secure"], $params["httponly"] 
     ); 
     } 

    // Finally, destroy the session. 
     session_destroy(); 
     } 
    ?> 
+0

你能舉個例如如何檢查用戶是否可以訪問頁面? – Cid

+0

@Cid當用戶登錄到他/她的帳戶時,我將會話變量Alogin設置爲Ok,並且在受限制的頁面上檢查是否設置了該變量 –

+0

'session_start()'在頂部,並使用'unset($ _ SESSION ['Alogin'])' –

回答

0

會議session_start()必須在頂部

<?php 
// Initialize the session. 
session_start(); 
// If you are using session_name("something"), don't forget it now! 
    if(isset($_POST['logout'])){ 


    //What ever you want 

    // Finally, destroy the session. 

    unset($_SESSION); 
    session_destroy(); 

    //redirect to loginpage 
    header('Location:../login.php'); 
    exit; 
    } 
?> 
+0

完成它的工作完美。還有一個問題,即使會話被銷燬,我如何保留一個變量的值 –

0
  1. 把你session_start(); if語句之外,
  2. 檢查與print_r ($_POST);如果您發送$_POST['logout']