我有一个系统,我已经为我的工作与多种形式和管理控制台。不过,我目前在mysql数据库中为每一个都有一个不同的日志。每个都包含“系统”中该部分的用户。
所以我尝试将所有内容添加到一个db中,并传递一个会话变量。变量为“true”。我在页面上的代码如下所示:
if ($_SESSION['logged_in'] != 1 && $_SESSION['breach'] != 'true') {
$_SESSION['message'] = "You must log in as an admin!";
echo 'true';
header("location: /admin.php");
} else {
// Makes it easier to read
$username = $_SESSION['username'];
echo 'false';
}
我添加了echo true/false以查看它是否有效。如果我在html中传递$\u session['break']变量,它会显示单词true。所以我知道变量正在工作,并从登录页传递到这个页面。下面是正在显示的html中的变量片段。
<p style="float:right;">You are logged in as: <?= $_SESSION['username'] ?></p><br>
<p style="float:right;">Your profile: <?= $_SESSION['breach'] ?></p>
我的数据库用户字面上只是
id | username | password | breach
1 test bcrypt true
2 test1 bcrypt
所以我希望test1访问这个页面,test1被重定向到/admin.php
1条答案
按热度按时间zu0ti5jz1#
我找到了解决这个问题的办法。每个页面不需要两次违规验证和登录。一旦他们登录到登录页面,它就会将变量推送到会话中。因此,如果他们没有在会话中登录,则不会设置,因此违反是不正确的。如果他们登录了,那么这个漏洞是真的。因此,通过删除登录验证并使用漏洞验证,它第一次起作用。