$ _SESSION不更新其他页面上的视图

时间:2014-04-08 00:45:58

标签: php session

PHP

$post_id = $_GET['post_id'];

if(!isset($_SESSION['view_counter'])){
            $_SESSION['view_counter'] = $post_id;
            $increment_views->execute();
        }

mysql查询

    $increment_views = $connectDB->prepare("UPDATE database.table 
SET post_views = post_views + 1 WHERE post_id = $post_id;");

当我尝试使用会话添加页面视图计数器时,只是坚持这个问题。这似乎很简单,但无法解决问题。可以说我目前正在www.website.com/posts.php?post_id=3。所以首先没有设置会话然后代码运行,会话设置,视图递增,看起来很好!然后我浏览到www.website.com/posts.php?post_id=5,但视图不会增加,因为会话已经存在。那么在这种情况下我将如何区分会话。所以它不会认为这两个页面是相同的。

2 个答案:

答案 0 :(得分:2)

正如我所提到的,你应该过滤IP,但这里有一个建议:

$post_id = $_GET['post_id'];

if(!isset($_SESSION["viewcount_".$post_id])) {
  $_SESSION["viewcount_".$post_id] = true;
  $increment_views->execute();
}

答案 1 :(得分:1)

我会在刷新时存储会话变量,例如$_SESSION['countedPostId']=$post_id,然后检查以确保$_GET['postid']$_SESSION['countedPostId']相同。如果是的话,它已被计算在内。如果不是,您需要重新计算。

如果我正确地解释了你的问题,那就是。

替代方法编辑:

也许尝试在sessions变量中存储一个“已经增加”的post_id数组,以防止问题返回/转发。

相关问题