【发布时间】:2013-03-25 14:46:24
【问题描述】:
我有这个基本查询,显示哪个用户可以访问哪个页面。
$query = mysql_query("SELECT UserName FROM tblUsers WHERE PageOne = 1") or die (mysql_error());
本质上,这是对所有有权访问 PageOne 的用户进行检查。
我正在尝试比较 $currentUser = $_SESSION['username'](正确显示登录的用户)是否是此人。
在获得所有用户之后,
我做了这个简单的循环来检查他们是否有访问权限。
while ($row = mysql_fetch_assoc($query))
{
if (in_array($currentUser,$row["UserName"]))
echo "you have access"; //for testing purposes
else
die("you're not authorized");
}
这将始终进入 else 语句,而它不应该出现。如果我尝试调试这个,我发现在查询中应该有三个用户,但是 $row["UserName"] 只返回一个用户(第一个)。
但是,如果我去掉 if/else 语句并简单地打印 $row["UserName"],它会打印正确的用户。
那么,我该如何解决这个问题?
谢谢!
编辑
在 while 循环中,如果我运行 echo $row["UserName"],我会得到 User1User2User3(其中 User3 是 CurrentUser)
为了调试,我运行
if ($currentUser == $row["UserName"])
echo "you have access";
else
echo $row["UserName"];
我明白了
User1User2你有访问权限
【问题讨论】:
-
简单的问题,但
$row["UserName"]是一个数组吗? While 循环应该为 3 个用户循环 3 次,您应该与if ($currentUser == $row["UserName"])进行比较 -
哦,in_array 是最后一分钟添加的。我只是使用“==”来实际比较它们。有没有其他方法可以做到这一点?我尝试使用 array_values,但也没有用。
-
但是 $currentUser 是一个字符串吗?如果是,则 == 必须有效。