【问题标题】:How to use Cookies to count visits in PHP?PHP中如何使用Cookies来统计访问量?
【发布时间】:2019-01-14 18:35:37
【问题描述】:

我是 PHP 新手,在使用 Cookie 时遇到了很大的麻烦! 因此,我尝试使用一个 cookie 来计算页面在 1 分钟的生命周期内加载的次数。一旦它达到其生命周期,就需要取消设置,并且计数器应该回到 0。

到目前为止,这是我所拥有的: 在php文件的顶部

<?php
  session_start();
  $_SESSION['user_start'] = time();
  $cookie_name = "counter";
  $cookie_value = 0;
  setcookie($cookie_name, $cookie_value); 
?>
<html>
<body>
<?php
if (time() - $_SESSION['user_start'] < 60) {
  $counter = $_COOKIE[$cookie_name] +1; 
  setcookie($cookie_name, $counter);
  echo "Value is: " . $_COOKIE[$cookie_name];
}
else{
  unset($_SESSION['user_start']);
  unset($_COOKIE[$cookie_name]);
}
?>

【问题讨论】:

  • 您到底想达到什么目的?我怀疑你在这里尝试的东西不会像你真正想要的那样......
  • 我正在尝试使用页面计数器。因此,当您每次加载页面时,它都会增加计数器。计数器仅持续 1 分钟,然后返回 0。
  • cookies 存在于用户的机器上,所以每个用户都有自己的 cookie...你不会有一个聚合计数器,每个用户只会看到他们的次数已经在 cookie 生效时刷新了页面……这真的是你想要的吗?
  • 我不确定我是否理解正确,所以你的意思是我应该这样做 $_COOKIE["counter"] = $cookie_name ?
  • 您可以执行$counter = isset($_COOKIE['counter']) ? ++$_COOKIE['counter'] : 0; setcookie("counter", $counter, time()+60); 之类的操作 ...但问题是您每次重写 cookie 时都会重置到期时间。

标签: php html cookies session-cookies


【解决方案1】:

这有点奇怪 - 但这应该可以解决问题,我将 counter 值和 expiry 时间都存储在 JSON 格式的 cookie 中。这样您就可以在保持初始到期时间的同时增加计数器(例如,在初始请求后 1 分钟)。

<?php
$counter = 0;
$expires = time()+60;

if(isset($_COOKIE['counter'])) {    
    $data = json_decode($_COOKIE['counter']);
    $counter = ++$data->counter;
    $expires = $data->expires;
}

$jsonData = json_encode(['counter' => $counter, 'expires' => $expires]);
setcookie("counter", $jsonData, $expires);

echo $counter;

【讨论】:

  • 非常感谢!!我把它放在标题中还是 标签之后?只是为了确定:o
  • @dancingRageForFUn 你把它放在你向用户输出任何东西之前。如果您已经开始推送输出,setcookie 将抛出错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-23
  • 1970-01-01
  • 2018-12-31
相关资源
最近更新 更多