在php中的Cookie页面计数器

Ste*_*ris 11 php cookies

我正在实现一个php页面计数器,它将跟踪每次用户访问此页面,直到浏览器关闭.我正在检查是否设置了cookie,如果是的话.然后我增加它并重置它的值.但我遇到的问题是柜台总是两个,这是为什么?

<html> 
    <head> 
        <title>Count Page Access</title> 
   </head> 
  <body> 
<?php 

    if (!isset($_COOKIE['count']))
    {
        ?> 
Welcome! This is the first time you have viewed this page. 
<?php 
        $cookie = 1;
        setcookie("count", $cookie);
    }
    else
    {
        $cookie = $_COOKIE['count']++;
        setcookie("count", $cookie);
        ?> 
You have viewed this page <?= $_COOKIE['count'] ?> times. 
<?php  }// end else  ?> 
   </body> 
</html>
Run Code Online (Sandbox Code Playgroud)

编辑:谢谢大家,我做了预增量的事情并让它发挥作用

Ble*_*der 6

这一行是问题所在:

$cookie = $_COOKIE['count']++;
Run Code Online (Sandbox Code Playgroud)

它没有按照你期望的方式增加; 变量$cookie设置为值$_COOKIE,然后$_COOKIE递增.这是后增量算子.

改为使用preincrement运算符,该运算符递增然后返回:

$cookie = ++$_COOKIE['count'];
Run Code Online (Sandbox Code Playgroud)


jpr*_*itt 6

这是因为++被用作后增量而不是预增量.基本上正在发生的事情是你说,"设置$cookie为值$_COOKIE['count'],然后递增$_COOKIE['count'].这意味着每次你设置它实际上只是$cookie等于1,即使$_COOKIE['count']它显示为2,实际的cookie你发送的只会等于1.如果你这样做,$cookie = ++$_COOKIE['count'];你应该得到正确的结果.