Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将最新消息标记为&引用;新";_Php_Mysql - Fatal编程技术网

Php 将最新消息标记为&引用;新";

Php 将最新消息标记为&引用;新";,php,mysql,Php,Mysql,在我经常去的一些网站或论坛上,我还没有读过的条目被标记为“新”。我想在我开发的一个网站上实现这个特性(不时发布新闻)——php/mySQL。这通常是怎么做的?是否需要使用cookie来记住上次访问的日期/时间?还是上次查看的帖子/URL?如何识别用户?Cookie是做这类事情的唯一可靠方法 我会使用cookie来存储用户上次访问的时间,但如果cookie不存在,我也会有一个合理的默认值,比如1周 然后根据比该日期更新的内容显示新内容。您可以将实际的上次访问日期存储在cookie中,也可以将该人员

在我经常去的一些网站或论坛上,我还没有读过的条目被标记为“新”。我想在我开发的一个网站上实现这个特性(不时发布新闻)——php/mySQL。这通常是怎么做的?是否需要使用cookie来记住上次访问的日期/时间?还是上次查看的帖子/URL?如何识别用户?

Cookie是做这类事情的唯一可靠方法

我会使用cookie来存储用户上次访问的时间,但如果cookie不存在,我也会有一个合理的默认值,比如1周


然后根据比该日期更新的内容显示新内容。

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

Cookies只是为会话或未经身份验证的用户在访问之间识别用户的一种可能方法。虽然这是一种非常普遍和有用的方法。(PHP也可以使用sid或其他参数,尽管它不再常见。)

您需要存储用户已阅读或未阅读的线程/帖子。您可以通过在“日期”之前阅读所有内容或为某些子论坛发布帖子来总结问题

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

编辑:已访问链接的CSS将不会帮助您获得新的新闻评论、新帖子、直接转到第一篇未读帖子或访问工作/学校和家庭网站。

我这样做:

  • 如果用户没有用户名且未登录,则我不会显示新项目
  • 如果用户已登录,并且已显示所有项目,则我将当前日期/时间存储在用户文件中,并使用此值计算出哪些项目是新的
  • 如果用户日期/时间在最近十分钟内,则我不会更新用户日期/时间
这是我的密码

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
函数绘图页
如果(isLoggedIn)
从数据库中获取dbUser
lastUserDateTime=dbUser.LastCommentTime
其他的
lastUserDateTime=yesterdaye
如果结束
每个职位
获取邮寄日期
如果post->date
旁注:这样做实际上是在复制浏览器功能:(只要使用固定的URL),浏览器将为访问的链接提供不同的样式。当然,如果清除历史记录,这将重置,但如果删除cookie,则仅基于cookie的解决方案也将如此清除(由于许多浏览器具有“删除私有数据”功能,默认情况下会同时删除这两个数据,因此通常会同时重置)

此网站有固定的url(用于问题),并且没有将访问的颜色设置为与正常链接颜色相同的颜色,因此您可以通过链接颜色查看您访问过的问题


编辑:你也可以使用CSS来编辑。

谢谢比尔,我开始写作时确实在考虑这个问题,但不知怎的,我忘了……;)我怎么能不去想那件事!非常感谢您的投入!