PHP 会话重定向到登录



PHP新手,仍在学习如何散列和验证密码。 但在我到达那里之前,我需要帮助解决我的代码出了什么问题。 我可以注册,它将值保存到我的数据库中。 但是当进入我的家时.php或任何其他使用

<?php 
session_start(); 
if (!isset($_SESSION['username'])) {
$_SESSION['msg'] = "You must log in first";
header('location: login.php');
}
if (isset($_GET['logout'])) {
session_destroy();
unset($_SESSION['username']);
header("location: login.php");
}
?>

使用我的登录/注册.php包含代码的文件

$password = md5($password_1);
$query = "SELECT * FROM loginsystem WHERE username='$username' AND password='$password'";
$results = mysqli_query($db, $query);
if (mysqli_num_rows($results) == 1) {
$_SESSION['username'] = $username;
$_SESSION['success'] = "You are now logged in";
header('location: home.php');
}else {
array_push($errors, "Wrong username/password combination");

但是一切都重定向到登录.php并重置值,就好像我希望它破坏会话一样。我在验证会话时做错了什么吗?

基本上,我只是使用OR运算符将您的两个if条件组合在一个中。尝试使用这个。

<?php 
session_start(); 
if ((!isset($_SESSION['username'])) || isset($_GET['logout'] )) {
session_destroy();
unset($_SESSION['username']);
header("location: login.php");
}
?>

在您的登录/注册页面中尝试使用

session_start()

会话打开后,我们可以设置会话变量。 让我知道结果如何。

最新更新