将最新消息标记为......“新”

时间:2008-11-25 12:35:11

标签: php mysql

在我经常访问的某些网站或论坛上,我尚未阅读的条目被标记为“新”。我想在我开发的网站上实现这个功能(不时发布新闻) - php / mySQL。这通常是怎么做的?是否需要使用cookie记住上次访问日期/时间?或者最后查看过的帖子/网址?如何识别用户?

5 个答案:

答案 0 :(得分:3)

Cookie只是识别会话用户或未经身份验证的用户访问之间的一种可能方式。虽然是一种非常常见且有用的方式。 (PHP也可以使用sid或其他参数,但不再常见。)

您需要存储用户已阅读的线索/帖子,或者他/她没有。您可以在“日期”之前阅读所有内容或在某些子论坛上阅读postId。

这一切都取决于论坛,帖子和新闻的布局,以及它们的动态性。您可能也只想显示自上次访问以来的新帖子,在用户当前位于您的网站时显示新帖子,然后使用自上次访问后的新帖子,如果用户离开的时间超过预定义(x小时)/计算(如果周末是y小时,如果是管理员则是z小时)。

编辑:访问过的链接的CSS无法帮助您获取新的评论新闻,新帖子,直接转到第一个未读帖子或访问工作/学校和家中的网站。

答案 1 :(得分:3)

附注:这样做实际上会复制浏览器功能:(只要您使用固定网址),浏览器会在访问过的链接上为链接提供不同的样式。当然,如果您清除历史记录,这将重置,但是如果cookie被删除,那么基于cookie的解决方案将再次清除(许多浏览器具有“删除私有数据”功能,默认情况下删除两者,通常会重置为同时)......

此网站已修复网址(用于提问),并且不会将访问颜色设置为与普通链接颜色相同,因此您可以通过链接颜色查看您访问过的问题。 / p>

编辑:你也可以使用CSS add an icon to visited links

答案 2 :(得分:0)

Cookie是实现此类事情的唯一可靠方式。

我会在用户上次访问时使用Cookie来存储,但如果Cookie不存在,则会有一个合理的默认值,例如1周。

然后针对比该日期更新的事物展示新的内容。

答案 3 :(得分:0)

您可以将实际上次访问的日期存储在Cookie中,也可以只将该人员的唯一ID存储在Cookie中,并跟踪他们上次在数据库中读取的内容。如果您执行后者,您可以允许他们在不同的浏览器上使用相同的ID登录,并且仍然可以获得准确的计数。

答案 4 :(得分:0)

我是这样做的:

  • 如果用户没有用户名且未登录,则我不会显示新项目。
  • 如果用户已登录,并且他们已显示所有项目,则我将当前日期/时间存储在用户文件中,并使用此值来计算新项目。
  • 如果用户日期/时间在最近十分钟内,那么我不会更新用户日期/时间。

这是我的代码......

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
相关问题