php - php会话重定向到登录
问题描述
php 新手,仍在学习如何散列和验证密码。但在我到达那里之前,我需要帮助我的代码出了什么问题。我可以注册,它将值保存到我的数据库中。但是当进入我的 home.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");
}
?>
使用包含代码的 login/register.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");
但是一切都重定向到 login.php 并重置值,就好像我希望它破坏会话一样。验证会话时我做错了什么吗?
解决方案
基本上,我刚刚使用OR运算符将您的两个if条件合二为一。尝试使用这个。
<?php
session_start();
if ((!isset($_SESSION['username'])) || isset($_GET['logout'] )) {
session_destroy();
unset($_SESSION['username']);
header("location: login.php");
}
?>
推荐阅读
- html - 滚动到 html 页面的特定部分不起作用
- android - TimeFormatCyclicRoulette 使 kivy 应用程序崩溃
- python - 使用带有时间序列的 boxcox
- spring-boot - 如何在 Spring Boot 中为不同的控制器赋予不同的指标标签
- android - 错误:配置“实现”到配置“内部发布”未在项目的描述符中声明
- express - Ionic 3+ 和 Node/Express:(未知 url)的 Http 失败响应:0
- c# - 类型化参数方法来初始化一个类型...为什么这无效?
- android - Android 模拟器中缺少小部件预览应用程序
- typescript - threejs 移动多个对象
- python - Django/mod_wsgi 在传递到另一个 url 时失去会话