php登录-如果条件不起作用,则为多个

h7appiyu  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(250)

我有一个系统,我已经为我的工作与多种形式和管理控制台。不过,我目前在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

zu0ti5jz

zu0ti5jz1#

我找到了解决这个问题的办法。每个页面不需要两次违规验证和登录。一旦他们登录到登录页面,它就会将变量推送到会话中。因此,如果他们没有在会话中登录,则不会设置,因此违反是不正确的。如果他们登录了,那么这个漏洞是真的。因此,通过删除登录验证并使用漏洞验证,它第一次起作用。

相关问题