Php 如何使注销按钮在HTML中正常工作
我已经设计了一个网站,在子菜单中有一个注销选项。代码为HTML,如下所示:-Php 如何使注销按钮在HTML中正常工作,php,Php,我已经设计了一个网站,在子菜单中有一个注销选项。代码为HTML,如下所示:- <p><a href="adminlogin.php" target="self">logout</a></p> 现在,这成功地将我带回adminlogin.php页面,但在这之后,每当我按下web浏览器顶部的后退按钮时,我都会再次转到该页面,在按下注销按钮之前。但是,如果我按下了注销按钮,则不应该发生这种情况,除非我再次登录,否则将无法返回该页面 为避免注销后出现
<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
}
?>
<?php
if(isset($_GET['logout'])) {
session_start();
session_destroy();
unset($_SESSION["username"]);
unset($_SESSION["useremail"]);
header('Location: index.php');
exit;
}
?>
您必须添加每个页面的顶部,以检查用户是否已登录 在里面如果没有,则应将其重定向到登录页面: 示例:
<?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
}
?>
<?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
}
?>
<?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');
}
}
?>
简单注销按钮
logout.php
或者如果设置了Cookie,则
您需要会话来完成此操作。 所以基本上,当您登录时,您需要设置会话变量
$_SESSION['loged_in']=1; // set session with desired name
在注销时,您需要销毁此会话值
unset($_SESSION["loged_in"]); // unset specific session
或
最重要的是,您需要在不希望用户不登录的每个页面上检查会话值。像
if(isset($_SESSION['loged_in']) && !empty($_SESSION['loged_in'])) {
redirect('login.php'); // redirect to log in page
}
如果您正在使用会话,则需要在注销时销毁会话,并检查每个已验证页面上的会话。您如何验证用户是否已登录?使用客户端cookie还是服务器会话?无论哪种方式,隔离的登录区域都不会验证会话,因此显示用户仍在登录。这是一个相当广泛的问题,因为我们不知道您的用户会话是如何管理的
session_destroy(); // destroy al
if(isset($_SESSION['loged_in']) && !empty($_SESSION['loged_in'])) {
redirect('login.php'); // redirect to log in page
}