2017-06-29 46 views
-5

正常工作,我設計了一個網站,並沒有在子menu.The代碼是HTML和註銷選項是在這裏: -如何讓註銷按鈕,在HTML

<p><a href="adminlogin.php" target="self">logout</a></p> 

現在這個成功使我回到adminlogin.php頁面,但在那之後,只要按下Web瀏覽器頂部的後退按鈕,我就會再次進入該頁面,然後再按下注銷按鈕。但是,如果我按了退出按鈕,然後應該有沒有辦法回到那個網頁,除非我再次登錄

+1

如果您正在使用會話,則需要銷燬註銷時的會話並檢查每個經過身份驗證的頁面上的會話。 –

+2

您如何驗證用戶已登錄?使用客戶端cookie或服務器會話?無論哪種方式,您離開的登錄區域不會驗證會話,因此顯示用戶仍然登錄。這是一個相當廣泛的問題,因爲我們不知道您的用戶會話是如何管理的。 – Terry

+0

[有什麼更好的註銷在PHP?](https://stackoverflow.com/questions/9615057/what-is-better-to-logout-in-php) –

回答

1

爲了避免瀏覽器後退按鈕註銷後,這不應該發生:


你必須添加的每個頁面的頂部,以檢查用戶登錄 如果不是,他們應該被重定向到一個登錄頁面:

實施例:

<?php 
     if(!isset($_SESSION['username']) && !isset($_SESSION['useremail'])){ 

     header("Location: login.php"); // redirect to login page or index page if email and username is not set in session 
    } 

?> 

立即註銷頁上,簡單地取消設置usernameuseremail 會話變量,並破壞會話或(餅乾)。你設定了什麼。

例子:

<?php 
    if(isset($_GET['logout'])) { 
    session_start(); 
    session_destroy(); 
    unset($_SESSION["username"]); 
    unset($_SESSION["useremail"]); 

    header('Location: index.php'); 
    exit; 
    } 
?> 


工作代碼對於所有頁面用戶登錄後:Home.phpabout.phpcontact.php等。

實施例:

<?php 
// After User Login and come to home page. 

require 'database_conn.php'; // Connection 
session_start(); // Session start 
?> 


<?php 

// If User is Not Login Then Redirect to `index` Page Automatically 

//if(!isset($_SESSION['username']) && !isset($_SESSION['useremail'])) 

if(!isset($_SESSION['useremail'])){ 

    header("Location: index.php"); 
    // Redirect to index page if email is not set in session 

} 
?> 

工作CODE對於註銷用戶:Logout.php

實施例:

<?php 
// After User Click On Logout page. 
require 'database_conn.php'; // Connection 
session_start(); // Session start 
?> 


<?php 
    if(isset($_POST['logout'])) { 

    if(isset($_SESSION['useremail'])){ 

    unset($_SESSION["useremail"]); 
    session_destroy(); 
    session_unset();  
    header('Location: index.php'); 

     } 
    } 
?> 



簡單註銷按鈕

<a href="logout.php">Logout</a> 

logout.php

<?php 
if(isset($_GET['logout'])) { 

session_start(); 
session_destroy(); 
header('Location: login.php'); 
exit; 
} 
?> 

或者如果Cookie的設置,則

<?php 
    if(isset($_GET['logout'])) {  
    unset($_COOKIE['access_token']); 
    header('Location: login.php');  
    exit; 

    } 
?> 
0

你需要會議來做到這一點。 所以基本上,當你登錄你需要設置會話變量像

$_SESSION['loged_in']=1; // set session with desired name 

而就註銷你需要摧毀這個會話值

unset($_SESSION["loged_in"]); // unset specific session 

session_destroy(); // destroy al 

而且最重要的部分你需要檢查每個頁面上的會話值,你不希望用戶出去登錄。像

if(isset($_SESSION['loged_in']) && !empty($_SESSION['loged_in'])) { 
    redirect('login.php'); // redirect to log in page 
}