php - 需要在 Web 开发抽象的所有层中访问相同的 bool 结果

标签 php javascript mysql

我正在设计一个网站,它具有登录功能。当有人登录时,有时需要知道他们属于哪个组。具体来说,他们是否属于 officer团体。目前,我有一个 MySQL 存储过程 BOOL is_officer(INT id) ,其中id是用户 ID 号。

我的问题:在我的库中创建 PHP 函数是否明智 (bool) is_officer() ,它使用 $_SESSION['id']并调用 MySQL 存储过程?

接下来,制作一个页面是否明智?/ajax/is_officer.php ,它会调用 PHP 中的函数,而 PHP 又会调用 MySQL 存储过程,以防我需要(不安全地)即时知道用户是否是军官?

(最后将创建一个 JS 函数 is_officer() ,它将向 is_officer.php 发送 AJAX 请求)。

tl;dr:许多语言中的函数名称相同,一个函数调用另一个函数,离数据库越来越近——好主意还是坏主意?

我基本上是在这里寻求你的指导——有点像集体赞成/反对投票。这与您过去见过的任何设计模式相符吗?

最佳答案

这似乎是一个过于特化的功能。通过这种方法,您最终将为每个琐碎的信息积累不同级别的一组函数。此外,往返数据库很快就会变得非常浪费。

我更愿意在 session 中存储有关登录用户的相关信息。类似这样的事情:

if (/* user logged in successfully */) {
    $user = $Db->getUserInfo($id);
    // $user = array('id' => 1, 'name' => 'Foo', 'officer' => true, ...)
    $_SESSION['user'] = $user;
}

每当您需要知道用户是否是官员时,只需检查 $_SESSION['user']['officer'] 即可。

关于php - 需要在 Web 开发抽象的所有层中访问相同的 bool 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2971415/

相关文章:

javascript - Colorbox 未将大小调整到正确的高度

php - Zend 框架 : Meta attributes (keywords/description) from database

mysql - Mysql服务器缺少括号错误

javascript - 从 AJAX 调用的 PHP 排序数组不起作用

c# - 失控的 switch 语句的最佳替代方法是什么?

php - 修改php脚本以填充SQL Server 2012

javascript - 如何将普通 JS 对象转换为 Immutable 集合?

php - MySQL 相当于 mysql_num_rows。哪个更好?

php - MySQL 语句调出数据

php - 学说条件连接