首次访问时未设置Cookie

时间:2014-03-17 03:29:18

标签: php cookies

虽然我已使用setcookie设置了Cookie,但为什么在第一次执行/首次访问时会跳到else部分?

<?php
    setcookie("dan", "Sony", time()+60);
    if(isset($_COOKIE['dan']))
    {
        echo "Set";
    }
    else
    {
        echo "Not yet!";
    }

?>
P.S:我知道这是一个天真的问题,但是我没有找到比StackOverflow更好的论坛。

3 个答案:

答案 0 :(得分:2)

setcookie()只是安排PHP脚本发出的HTML标题包含必要的“Set-Cookie:”标题。浏览器通过存储cookie进行响应,然后在下一次请求网站时对其进行反刍。

setcookie()不会在当前正在执行的脚本中设置任何变量,这就是您第一次看不到任何内容的原因。

答案 1 :(得分:0)

您无法在$_COOKIE的同一请求中获得setcookie的价值,您可以从下一个请求开始。

当您第一次告诉浏览器设置Cookie时,请求标头中没有Cookie数据(可能来自$_COOKIE)。

答案 2 :(得分:0)

使用javascript设置Cookie。

 function createCookie(name,days,value) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime()+(days*24*60*60*1000));
            var expires = "; expires="+date.toGMTString();
        } else var expires = "";
        document.cookie = name+"="+value+expires+"; path=/";
    }

    function readCookie(name) { //cookie reader function
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for(var i=0;i < ca.length;i++) {
            var c = ca[i];
            while (c.charAt(0)==' ') c = c.substring(1,c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
        }
        return null;
    }

    function eraseCookie(name) { //cookie eraser function
        createCookie(name,"",-1);
    }
            createCookie("test", 1, 1);
            var mycookie= readCookie("test");
            alert(mycookie);