我正在尝试为cookie做这个计数器。当我多次访问网站时,cookie会给出正确的值,但是对于第一次访问,它总是告诉我cookie(两者)都没有设置。我是PHP的新手,所以我不确定我是否错过了什么。 cookie在html标签之前设置。
setcookie("user", isset($_COOKIE["user"])? ++$_COOKIE["user"] : 1);
setcookie("date", date("d/m/y h:i:s"));
$count = $_COOKIE["user"];
---------------------------------
<body>
<p><?php
if( $count == 1)
echo "Welcome! You're new here.";
else
echo "Hello, you have visited " .$_COOKIE["user"]. " times.";
echo "<br/>";
echo "Your last visit was ".$_COOKIE["date"];
?></p>
</body>
答案 0 :(得分:1)
我不确定,但我现在看到的只是其他方式被误用 你可以写:
if (cond)
do();
else
doelse();
只需一行就可以这样工作
改为使用:
<?php
if($count == 1)
echo "Welcome! You're new here.";
else {
echo "Hello, you have visited " .$_COOKIE["user"]. " times.";
echo "<br/>";
echo "Your last visit was ".$_COOKIE["date"];
}
?>
答案 1 :(得分:1)
setcookie
函数将cookie放入服务器http标头,该标头与第一个请求一起发送。然而,$_COOKIE
数组不会从内部传递这些值(来自setcookie函数),而是从浏览器发送的请求标头生成,这只发生在浏览器获取cookie之后(来自第一个请求)并在第二次请求时将其发回。
你能做的是:
$count = isset($_COOKIE["user"])?$_COOKIE["user"]:1;