PHP检查用户是否为Admin

时间:2016-05-22 00:00:17

标签: php mysql

这是我的第一篇文章。

我正在尝试检查我的MySQL数据库以查看用户是管理员还是普通用户,它总是说我是管理员。我的数据库是:

ID 名称 电子邮件 密码 作用

我有一个测试用户:id:1 name:admin email:admin@admin.com role:2

我的代码是:

<?php if (isset($_SESSION['usr_id']) || $row["role"] = 1) { ?>
<!DOCTYPE html>
<html>
<head>
<h2>You are a admin!</h2>
</head>
</html>
<?php } else { ?>
<h2>You are either not logged in, or you have no access to this page.</h2>
<?php } ?>

然而,即使我的角色是2,它总是说我是管理员!

4 个答案:

答案 0 :(得分:4)

UPDATE `ads` SET `aName` = replace(aName, 'amp;', '') UPDATE `ads` SET `aDesc` = replace(aDesc, 'amp;', ''); 这是作业,而不是比较。转到$row["role"] = 1

答案 1 :(得分:0)

您正在使用OR运算符(||),运算符验证在IF语句中指示的2个条件中的任何一个,因此将显示消息:&#34;您是管理员! &#34;当满足2个条件中的任何一个时。 如果您希望满足2个条件,则表明该消息必须使用逻辑AND(&amp;&amp;)来验证IF语句中2个条件的有效性。

if(isset($ _SESSION [&#39; usr_id&#39;])&amp;&amp; $ row [&#34; role&#34;] = 1){ ... }

答案 2 :(得分:0)

会话中必须有1个。在销毁会话后再试一次。

同时更改条件

FROM:<?php if (isset($_SESSION['usr_id']) || $row["role"] = 1) { ?>

TO:<?php if ((isset($_SESSION['usr_id']) && $_SESSION['usr_id'] == 1) || $row["role"] == 1) { ?>

答案 3 :(得分:0)

好的,似乎你正在分配值而不是比较它。这就是您始终以管理员身份登录的原因。

只需按data-val="val-2"更改$row["role"] = 1即可。此外,您应该使用$row["role"] == 1运算符代替&&

最后,您似乎是第一次学习编程,这些都是程序员在开始时遇到的典型错误。我建议您阅读&#34; PHP:初学者指南&#34;,Vikram Vaswani 这本书,对于那些学习PHP编程的人来说,这是一本优秀而简单的指南。

祝你好运。