Session 会话post链接已读/未读

Session 会话post链接已读/未读,session,hyperlink,Session,Hyperlink,我已经为我的网站创建了一个论坛脚本,一切正常,但我有一个想法被阻止了,我尝试为访问过的类别和帖子创建一个会话。因此,如果登录的用户没有阅读帖子,脚本将显示一个图像not_read.png,否则显示read.png 所以我的代码是这样的: $ctid = isset($_REQUEST['ctid']) ? $_REQUEST['ctid'] : ''; if ($action == 'spost'){ $select_posts = "SELECT * FROM forum_posts WHER

我已经为我的网站创建了一个论坛脚本,一切正常,但我有一个想法被阻止了,我尝试为访问过的类别和帖子创建一个会话。因此,如果登录的用户没有阅读帖子,脚本将显示一个图像not_read.png,否则显示read.png

所以我的代码是这样的:

$ctid = isset($_REQUEST['ctid']) ? $_REQUEST['ctid'] : '';
if ($action == 'spost'){
$select_posts = "SELECT * FROM forum_posts WHERE cat_id = '$ctid'....

session_set_cookie_params(0);
session_start();        
$_SESSION["CAT-$ctid"] = $ctid;
$ses_post = $_SESSION["CAT-$post_id"];
if ($ses_post == $post_id) {

echo "<img src='read.png'>";
}else{
echo "<img src='no_read.png'>";
}
}
正在工作,但当用户注销并再次登录时,所有post显示为未读取


知道如何修复此问题吗?

会话仅在您打开浏览器窗口并导航到站点的生命周期内有效,直到您的代码重置会话或用户关闭浏览器

因此,如果希望在不同会话之间用户可以使用已读/未读标志,则在会话中存储该标志是不可接受的

相反,您应该创建一个表,并将其与您的论坛帖子一起存储,其中包含一个UserId条目,PostID将在用户每次查看帖子时添加一行。然后使用此表确定是否已读取该表中有一行或未读没有与userid/posted匹配的行