这是我的第一篇文章。
我正在尝试检查我的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,它总是说我是管理员!
答案 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编程的人来说,这是一本优秀而简单的指南。
祝你好运。