设置cookie并更新cookie问题 - Php

时间:2010-12-06 10:22:38

标签: php

为了更熟悉cookie,我决定建立一个简单的cookie管理系统,以便更好地控制我可以存储和检索用户的信息。

想法是设置一个cookie(如果它不存在),并更新cookie(如果它已经存在于用户身上)。

一旦设置了cookie,它也将存储在一个数据库中,该数据库将在会话开始时和上次访问时跟踪。

创建一个cookie起初效果很好。但它突然停止工作,根本不会设置任何东西。这是createSession()函数的当前代码:

function createSession() {

// check to see if cookie exists
if(isset($_COOKIE["test"])) {
            // update time
    $expire = time()+81400;
    setcookie("test","$cookiekey",$expire,"/",false,0);
} else {
    // assign unique cookie id
    list($msec,$sec)=explode(" ",microtime());
    $cookiekey = preg_replace("/./","",($msec+$sec));
            // set time
    $expire = time()+81400;

    // set cookie
    setcookie("test","$cookiekey",$expire,"/",false,0);

    // assign the unqiue id to $_COOKIE[]
    $_COOKIE["test"]=$cookiekey;
    unset($cookiekey);unset($msec);unset($sec);unset($expire);
   }

}

我的方法是朝着正确的方向前进还是我做错了什么?

3 个答案:

答案 0 :(得分:3)

执行$_COOKIE["test"] = something;不会生成“测试”Cookie。你需要再次使用setcookie。

我不知道你为什么要那样做。为什么不检查$ _COOKIE [“name”]( 制作的cookie)。

答案 1 :(得分:1)

Cookie仅在其他请求完成后才可用。因此,请勿自行修改$_COOKIE

此外,如果您的情况存在Cookie(即设置了$_COOKIE['test']),则再次调用setcookie并将$cookiekey作为其值。但是当时没有定义$cookiekey,因此cookie将被空字符串覆盖。我想您想要使用$_COOKIE['test']代替:

if (isset($_COOKIE["test"])) {
    // update time
    $expire = time()+81400;
    setcookie("test", $_COOKIE["test"], $expire, "/", false, 0);
}

答案 2 :(得分:0)

您还可以使用PHP的built in session management(示例here)为您处理所有这些Cookie,从而节省您的所有痛苦。

相关问题