正常工作,我設計了一個網站,並沒有在子menu.The代碼是HTML和註銷選項是在這裏: -如何讓註銷按鈕,在HTML
<p><a href="adminlogin.php" target="self">logout</a></p>
現在這個成功使我回到adminlogin.php頁面,但在那之後,只要按下Web瀏覽器頂部的後退按鈕,我就會再次進入該頁面,然後再按下注銷按鈕。但是,如果我按了退出按鈕,然後應該有沒有辦法回到那個網頁,除非我再次登錄
正常工作,我設計了一個網站,並沒有在子menu.The代碼是HTML和註銷選項是在這裏: -如何讓註銷按鈕,在HTML
<p><a href="adminlogin.php" target="self">logout</a></p>
現在這個成功使我回到adminlogin.php頁面,但在那之後,只要按下Web瀏覽器頂部的後退按鈕,我就會再次進入該頁面,然後再按下注銷按鈕。但是,如果我按了退出按鈕,然後應該有沒有辦法回到那個網頁,除非我再次登錄
爲了避免瀏覽器後退按鈕註銷後,這不應該發生:
你必須添加的每個頁面的頂部,以檢查用戶登錄 如果不是,他們應該被重定向到一個登錄頁面:
實施例:
<?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
}
?>
立即註銷頁上,簡單地取消設置
username
和useremail
會話變量,並破壞會話或(餅乾)。你設定了什麼。
例子:
<?php
if(isset($_GET['logout'])) {
session_start();
session_destroy();
unset($_SESSION["username"]);
unset($_SESSION["useremail"]);
header('Location: index.php');
exit;
}
?>
工作代碼對於所有頁面用戶登錄後:
Home.php
about.php
contact.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;
}
?>
你需要會議來做到這一點。 所以基本上,當你登錄你需要設置會話變量像
$_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
}
如果您正在使用會話,則需要銷燬註銷時的會話並檢查每個經過身份驗證的頁面上的會話。 –
您如何驗證用戶已登錄?使用客戶端cookie或服務器會話?無論哪種方式,您離開的登錄區域不會驗證會話,因此顯示用戶仍然登錄。這是一個相當廣泛的問題,因爲我們不知道您的用戶會話是如何管理的。 – Terry
[有什麼更好的註銷在PHP?](https://stackoverflow.com/questions/9615057/what-is-better-to-logout-in-php) –