问题是当你注销时会话没有被破坏,所以你仍然可以访问一些你不应该访问它的页面,我放置了一个包含数组login_user
的echo语句{{1}每当你注销并粘贴该页面的链接时,login_user就会成功打印出我的代码出错的地方,我甚至尝试了其他方法,比如未设置,比如将$_SESSION
的值更改为“”没有任何更改。
登录页面代码(名称:HomeTest.php)
login_user
session.php:
<?php
require("./config.php");
if ($_SERVER["REQUEST_METHOD"] == "POST"){
session_start();
....
if($count == 1) {
$_SESSION['login_user'] = $myusername;
header("location: welcome.php");
}else {
$error = "Your username or password is incorrect";
}
}
logout.php:
<?php
require_once('./config.php');
session_start();
$user_check = $_SESSION['login_user'];
$ses_sql = mysqli_query($conn,"select username from accounts where username = '$user_check' ");
$row = mysqli_fetch_array($ses_sql,MYSQLI_ASSOC);
$login_session = $row['username'];
if(!isset($_SESSION['login_user'])){
header("location:HomeTest.php");
}
?>
除非您已登录,否则不应访问的其他页面:
<?php
session_start();
if(session_destroy()) {
unset($_SESSION['login_user']);
header("Location: login.php");
}
?>
答案 0 :(得分:2)
使用以下代码 logout.php
<?php
session_start();
session_destroy();
header("Location: login.php");
?>
希望这会起作用
答案 1 :(得分:1)
问题是因为
if(session_destroy()) {}
不会返回true
您可以通过
更改该条件if(isset($_SESSION['login_user']))
答案 2 :(得分:0)
使用以下代码:
<?php
session_start();
session_unset();