如何使用 php 使 post 的观看次数依赖于唯一用户

How to make post view count on unique user using php

我一直在 Whosebug 上搜索,我一直在尝试我找到的几个例子,但它还没有用,所以如果我能得到任何帮助或建议,我将不胜感激。

基本上,我当前的目标是仅针对唯一用户更新计数列。目前,只要用户刷新浏览器,计数就会增加,所以我认为这不是计数视图的最佳方式。

我试过类似的方法,但每次刷新页面时浏览量仍在增加。

<?php
  require_once '../config.php';
  $id = $_GET['id'];
  if (!isset($_SESSION['recent_posts'][$id])) {
    $sql = "UPDATE song SET count = count + 1 WHERE id = $id";
    $_SESSION['recent_posts'][$id] = 1;
}

  $stmt = $conn->prepare($sql);
  $stmt->execute();
?>

您可以使用 cookie 来做到这一点。

<?php
  require_once '../config.php';
  $id = (int)$_GET['id'];


    if (!isset($_COOKIE['view_counted'])) {
        setcookie('view_counted', $id, time() + (86400 * 30), "/"); // 86400 = 1 day
        if (!isset($_SESSION['recent_posts'][$id])) {
            $sql = "UPDATE song SET count = count + 1 WHERE id = $id";
            $_SESSION['recent_posts'][$id] = 1;
        }
        $stmt = $conn->prepare($sql);
        $stmt->execute();

    }elseif (isset($_COOKIE['view_counted']) && $_COOKIE['view_counted'] != $id) {
        setcookie('view_counted', $id, time() + (86400 * 30), "/"); // 86400 = 1 day
        if (!isset($_SESSION['recent_posts'][$id])) {
            $sql = "UPDATE song SET count = count + 1 WHERE id = $id";
            $_SESSION['recent_posts'][$id] = 1;
        }
        $stmt = $conn->prepare($sql);
        $stmt->execute();
    }else{
        //you have already counted this as view.
    }


?>