如何使用 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.
}
?>
我一直在 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.
}
?>