我正在用 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/
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib
我试图获取一个长度在1到10之间的字符串,并输出将字符串分解为大小为1、2或3的连续子字符串的所有可能方式。例如:输入:123456将整数分割成单个字符,然后继续查找组合。该代码将返回以下所有数组。[1,2,3,4,5,6][12,3,4,5,6][1,23,4,5,6][1,2,34,5,6][1,2,3,45,6][1,2,3,4,56][12,34,5,6][12,3,45,6][12,3,4,56][1,23,45,6][1,2,34,56][1,23,4,56][12,34,56][123,4,5,6][1,234,5,6][1,2,345,6][1,2,3,456][123
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数
所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择
我试图在索引页中创建一个超链接,但它没有显示,也没有给出任何错误。这是我的index.html.erb代码。ListingarticlesTitleTextssss我检查了我的路线,我认为它们也没有问题。PrefixVerbURIPatternController#Actionwelcome_indexGET/welcome/index(.:format)welcome#indexarticlesGET/articles(.:format)articles#indexPOST/articles(.:format)articles#createnew_articleGET/article
我知道我可以指定某些字段来使用pluck查询数据库。ids=Item.where('due_at但是我想知道,是否有一种方法可以指定我想避免从数据库查询的某些字段。某种反拔?posts=Post.where(published:true).do_not_lookup(:enormous_field) 最佳答案 Model#attribute_names应该返回列/属性数组。您可以排除其中一些并传递给pluck或select方法。像这样:posts=Post.where(published:true).select(Post.attr
我是rails的新手,想在form字段上应用验证。myviewsnew.html.erb.....模拟.rbclassSimulation{:in=>1..25,:message=>'Therowmustbebetween1and25'}end模拟Controller.rbclassSimulationsController我想检查模型类中row字段的整数范围,如果不在范围内则返回错误信息。我可以检查上面代码的范围,但无法返回错误消息提前致谢 最佳答案 关键是您使用的是模型表单,一种显示ActiveRecord模型实例属性的表单。c
question的一些答案关于redirect_to让我想到了其他一些问题。基本上,我正在使用Rails2.1编写博客应用程序。我一直在尝试自己完成大部分工作(因为我对Rails有所了解),但在需要时会引用Internet上的教程和引用资料。我设法让一个简单的博客正常运行,然后我尝试添加评论。靠我自己,我设法让它进入了可以从script/console添加评论的阶段,但我无法让表单正常工作。我遵循的其中一个教程建议在帖子Controller中创建一个“评论”操作,以添加评论。我的问题是:这是“标准”方式吗?我的另一个问题的答案之一似乎暗示应该有一个CommentsController参