在我通常会去的一些网站或论坛上,我还没有阅读的条目标记为“新”。我想在我开发的网站上实现这个功能(不时发布新闻) - php/mySQL。这通常如何完成?是否需要使用记住上次访问日期/时间的cookie?或最近查看的帖子/网址?我如何识别用户?标记最新消息为...“新”
回答
Cookie只是识别会话用户或访问未经身份验证的用户的一种可能方式。虽然是一种非常普通而且有用的方法(PHP也可以使用sid或其他参数,尽管它不再常见)。
您需要存储用户已阅读哪些线索/帖子,或他/她没有的帖子。您可以在'date'或postId之前阅读某些subforums的内容。
这一切都取决于您的论坛,帖子和新闻的布局,以及它们的动态。您可能还只想显示自上次访问以来的新帖子,当用户目前在您的网站时显示新帖子,然后使用自上次访问以来的新帖子,如果用户离开的时间超过预定义(x小时)/计算(如果周末时间为y小时,如果管理员时间为z小时)。
编辑:被访问的链接的CSS不会帮助你新闻评论,线程中的新帖子,直接去第一个未读的帖子或在工作/学校和家中访问该网站。
Cookie是做这类事情的唯一可靠方法。
我会使用一个cookie来存储用户上次访问的时间,但如果cookie不存在,也会有一个合理的默认值,例如1周。
然后针对比该日期更新的事物展示新的东西。
您可以将实际上次访问日期存储在Cookie中,也可以将该人员的唯一ID存储在Cookie中,并跟踪他们上次在数据库中读取的内容。如果你使用后者,你可以允许他们在不同的浏览器上使用相同的ID登录,并且仍然可以获得准确的计数。
我做这种方式:
- 如果用户没有用户名和未登录,那么我不显示新项目。
- 如果用户已登录,并且已显示所有项目,则我将当前日期/时间存储在用户文件中,然后使用此值确定哪些项目是新的。
- 如果用户日期/时间在最后十分钟内,那么我不更新用户日期/时间。
这里是我的代码...
function drawPage
if (isLoggedIn)
get dbUser from database
lastUserDateTime = dbUser.LastCommentTime
else
lastUserDateTime = yesterdaye
end if
for each post
get date of post
if post->date < lastUserDateTime mark it as new
draw the post
loop
if (isLoggedIn)
if (lastUserDateTime + 10 mins) < now
dbUser.LastCommentTime = now
update dbUser in database
end if
end if
end function
一个侧面说明:这样做实际上将被复制浏览器功能:(只要你使用固定URL)的浏览器将在给链接不同的风格访问链接。当然,如果你清除历史记录,这将重置,但如果cookie被删除,那么基于cookie的解决方案将再次清除(许多浏览器具有“删除私人数据”功能,这两个功能在默认情况下都会删除,通常会重置为同一时间)...
此网站有固定的网址(对于问题)并且不会将访问颜色设置为与正常链接颜色相同,因此您可以通过链接颜色查看您访问过的问题。
编辑:你也可以使用CSS到add an icon to visited links。
谢谢比尔,当我开始写作的时候,我实际上正在考虑这个问题,但我忘了......;) – 2008-11-25 14:53:02
- 1. 设置像Android新图标的新消息数新消息
- 2. 最新消息创建RenderTarget2D
- 3. 取消刷新标记
- 4. 标记最新版本?
- 5. loop语句在最新消息框中显示最新帖子
- 6. SQL Query基于最新时间戳获取最新消息
- 7. 集团消息通过最新回应
- 8. 小消息解析器,最新不好?
- 9. 如何从Outlook获取最新消息
- 10. 在对话中获取最新消息
- 11. MySQL获取最新对话消息
- 12. 创建最新消息NLOG文件只
- 13. 从表中最新消息排序MYSQL
- 14. 返回来自MySQL的最新消息?
- 15. zfcuser,bjyauthorize和orm的最新消息
- 16. 最新消息,ObjectContext实例已处理
- 17. 褪色最新消息股票行情
- 18. Facebook API最近更新状态消息
- 19. WordPress的最新消息布局帖子
- 20. 获取超过20条最新消息
- 21. 从IObservable获取最新消息
- 22. 根据第一条消息获取最新的未读消息
- 23. TokensRegex:重新标记后标记为空
- 24. 骆驼JPA:标记为实体消耗(不更新表记录)
- 25. 最近3次发送的消息是最新的,而只保存最新的3条消息?
- 26. FbChatBot标记消息为阅读
- 27. java.mail标记消息为未读
- 28. 删除android中的新消息图标
- 29. Android:未读消息更新图标
- 30. iMessage新消息按钮的图标
这非常有洞察力!谢谢 ! – RaGE 2008-11-26 12:17:07