0

我正在为我在学校的项目团队编写一个小时注册系统。一切都很好,但我似乎无法验证用户的工作权限。

验证在用户表中的 acctype 字段中完成。如果为 0(访客),您只能查看工时列表,如果为 1(专家),您可以添加自己的工时,如果为 2(项目经理),您可以查看用户提交的工时。

起初我只使用 $account 查询,但我没有选择所有这些,而是​​只选择了 acctype。

有谁知道我做错了什么?

$cookie = $_COOKIE['user'];
$account = mysqli_query($conn, "SELECT * FROM user WHERE user = '" . $cookie . "'");
$acctype = mysqli_fetch_assoc($account->acctype);

if(isset($cookie) && $acctype >= 1) {

} else {

}

乔纳森

4

1 回答 1

1

我相信这里有一些问题:

  • 在检查它是否已设置之前,您正在阅读 cookie。这是一个错误。您应该查看是否有 cookie,然后将其读入。您也不需要为其分配单独的变量。

注意:正如我在评论中所说,用户数据应该在会话中,而不是 cookie。

  • 我不知道您的数据库架构是什么样的,但您的查询是SELECT * FROM user,这意味着如果您有 ID、用户名、访问级别和其他一些东西,您将把所有这些都放入 var $acctype,这显然不是整数。

我认为解决方法是执行查询,获取结果,然后比较返回的行并仅检查acctype部分:

if ($row['acctype'] >= 1){

}

文档:http ://us1.php.net/mysqli_fetch_assoc

于 2014-02-19T15:57:00.560 回答