我正在实现一个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)
编辑:谢谢大家,我做了预增量的事情并让它发挥作用
这一行是问题所在:
$cookie = $_COOKIE['count']++;
Run Code Online (Sandbox Code Playgroud)
它没有按照你期望的方式增加; 变量$cookie设置为值$_COOKIE,然后$_COOKIE递增.这是后增量算子.
改为使用preincrement运算符,该运算符递增然后返回:
$cookie = ++$_COOKIE['count'];
Run Code Online (Sandbox Code Playgroud)
这是因为++被用作后增量而不是预增量.基本上正在发生的事情是你说,"设置$cookie为值$_COOKIE['count'],然后递增$_COOKIE['count'].这意味着每次你设置它实际上只是$cookie等于1,即使$_COOKIE['count']它显示为2,实际的cookie你发送的只会等于1.如果你这样做,$cookie = ++$_COOKIE['count'];你应该得到正确的结果.
| 归档时间: |
|
| 查看次数: |
31718 次 |
| 最近记录: |