PDO获取所有未解决的问题

时间:2014-04-09 22:18:53

标签: php mysql

我有一张叫做书的桌子 在我的数据库中。我有管理员而非管理员的用户分配了布尔值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}

但它没有显示任何错误或其他任何内容。你能看到并解释这个问题吗?

2 个答案:

答案 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) {

    }
}