php - 向某些用户显示管理员消息的最佳方式?

标签 php jquery mysql

我正在用 PHP/MySQL/jQuery 构建一个社交网站。一旦用户登录到我的网站,我想查询数据库并获得管理员公告(如果存在)。这将是一个在页面上向所有用户显示的消息框,但它将有一个 X 可以单击它并且在管理员发布新的公告消息之前不会再次显示它。因此,如果您从不单击 X 并且数据库中存在公告消息,它将始终在您的页面上显示此消息框,但是如果您确实单击了 X 以关闭该框,那么您将返回该页面,它将不在那里,除非发布了新的管理员消息。

我知道有几种方法可以做到这一点,但我正在寻找最有效的方法。

我有一个想法,如果我在用户的表“admin_message”上添加一个额外的 mysql 字段并将其标记为 0,那么当我发布新的管理员消息时,如果管理员消息,它会将每个用户的记录更改为 1设置为 1 然后显示在用户页面上。然后当用户点击 X 隐藏框时,它会更新那里的用户表行并将值更改回 0。

我的另一个想法是使用 cookie 检查用户是否已选择隐藏消息,我认为这会更快但可能不太好,因为用户可以使用不同的计算机登录并且是否显示新消息,他们可能不会立即看到它。

所以我只是想知道使用额外的数据库字段是否是个坏主意?如果我有 1,000,000 个用户,当我发布一条新的管理员消息时,我将需要更新 1,000,000 行以确保每个人都能看到该消息。有没有更好的办法?此外,一旦用户登录到我的网站,我将使用 session 来存储他们看到或隐藏消息的值(value),而不是在每次页面加载时查看数据库。



更新

抱歉,我认为我的帖子可能有点令人困惑或不清楚我的确切意思,因为大多数回复都是针对消息系统的,而这与它相去甚远。

请忘记消息词,我会尝试用不同的词来解释。假设站点上有 1 个管理员,这是唯一可以向用户发布消息以供查看的管理员。用户只会看到 1 条消息,如果在站点的生命周期内发布了 2352345234 条消息,那没关系,他们只会看到 1 条消息,最新的消息。

现在,一些登录后在页面上看到“div”消息的用户可能会看腻,因此他们可以隐藏它,使其不再显示。

在该页面上显示此消息就像是或否一样简单。

但是,如果我决定我需要发布一条新的管理消息供所有用户查看,那么即使是选择隐藏而不显示管理消息的用户仍然会再次看到它,直到他们选择不再看到它为止。

最佳答案

两种简单的解决方案如下:

好:检查用户 cookie,如果它包含一个标志,表明消息已显示,则不显示该消息,否则显示它。当用户关闭它时,更新 cookie。优点:绝对简单。缺点:用户可能会看到相同的消息两次,具体取决于他们是清除 cookie 还是从另一台计算机登录。

更好:将标志存储在数据库中的某处(您现在可以将其存储在管理员用户表中,然后将其分解到另一个表中)。当用户登录时,1) 将此标志保存到用户的 cookie 或 session 中,2) 更新数据库,3) 决定是否需要显示消息。当用户关闭消息时,更新 cookie/ session 和数据库。优点:用户永远不会两次看到消息。缺点:稍微复杂一些,因为您需要在数据库中维护标志。

实现细节: 对于标志,您可以按照建议使用消息 ID,或者很可能您已经保留了用户的上次登录时间戳并可以使用它。

关于php - 向某些用户显示管理员消息的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2057576/

相关文章:

jquery - 检测 ajax 请求中的重定向?

javascript - jquery every() 迭代

mysql - 查询结果返回单引号

php - 通过ajax(html)将Html文本发送到php脚本以存储在数据库中。它只保存到

php - 初始网站加载速度较慢,后续加载速度较快

php - 有没有办法使用php转换经纬度?

Phpmyadmin 的 PHP 不执行但其他 php 脚本工作

Php Mysql 在html中显示2列的总和

javascript - 仅在表格第一页上显示工具提示

mysql - MySQL 中的精确小数除法