-1

我正在尝试制作一个hit counter,但是每次加载页面时都会hit counter更新该列。counter

$mread = $conn->prepare("UPDATE bn_publicacao SET counter = counter + 1 WHERE id = :id");
$mread->bindParam(':id', $id, PDO::PARAM_INT);
$mread->execute();

我希望它counter每个 ip/session 只更新一次。我该怎么做?

4

1 回答 1

1
session_start();

可选:检查会话是否开始。这里可能是一个设置会话配置的函数。

if(function_exists('session_status')){
   if(session_status() != PHP_SESSION_ACTIVE)die('no session');
}else{
  die('no session');
};

会话启动和配置后,您可以使用 $_SESSION 中的变量。

   if(empty($_SESSION['counter']))
    {
        $_SESSION['counter'] = 1;
        $mread = $conn->prepare("UPDATE bn_publicacao SET counter = counter + 1 WHERE id = :id");
        $mread->bindParam(':id', $id, PDO::PARAM_INT);
        $mread->execute();
    };

这样,仅当 $_SESSION['counter'] 不存在时才会运行查询代码。

这只是每个会话一次计数器的示例,而不是查询。

于 2018-10-04T22:35:54.183 回答