饼干计数器PHP

时间:2012-03-27 03:26:12

标签: php cookies

我正在尝试为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>

2 个答案:

答案 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;