我有一张叫做书的桌子 在我的数据库中。我有管理员而非管理员的用户分配了布尔值0, 所以我有一个功能,但我只希望管理员能够执行该功能。
因此,我需要使用他们的用户名检查数据库,以及他们是否是类型为== 0的管理员。我必须在PDO语句中完成所有这些操作。
$sqls =$handle->prepare("SELECT type FROM 888 WHERE 888='{$_COOKIE['888']}'");
$sqls->execute();
$row = $sqls -> fetch();
if($row['type']==0){do the function}
但它没有显示任何错误或其他任何内容。你能看到并解释这个问题吗?
答案 0 :(得分:1)
这很糟糕。您正在使用cookie(客户端)来检查访问者是否具有管理员权限。阻止任何人改变cookie的原因是什么?用户登录时,将管理员标志值存储在会话(服务器端)中。
登录时:
session_start();
$_SESSION['admin'] = 1; // for example
在您的特定页面上:
session_start();
if ($_SESSION['admin'] === 1)
{
// do the function
}
并且您可以避免执行不必要的数据库查询,从而在此过程中解决您的问题。
答案 1 :(得分:0)
请改用$ _SESSION。但是......
$mycookie = $_COOKIE['888'];
$sqls = $handle->prepare("SELECT type FROM `888` WHERE `888` = ? LIMIT 1");
$sqls->bindParam(1, $mycookie, PDO::PARAM_STR);
$row = false;
try {
$sqls->execute();
$row = $sqls->fetch();
}
catch (Exception $e) {
echo $e->getMessage();
}
if ($row) {
// may want to print_r($row) and debug...
if($row['type']==0) {
}
}