开发者

Set cookie and update cookie problem - Php

In an attempt to get more familiar with cookies I've decided to set up a simple cookie management system to have more control of the information that I can store and retrieve from a user.

The idea is to set a cookie if it do开发者_开发问答es not exist, and update a cookie if it already exists on the user.

Once the cookie is set, it will also be stored in a database that will keep track on when the session started and when it was last accessed.

Creating a cookie worked well at first. But suddenly it stopped working and wouldn't set anything at all. This is the current code of the createSession() function:

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);
   }

}

Is my approach heading in the right direction or have I done something way wrong?


Doing $_COOKIE["test"] = something; doesn't make a "test" cookie. You need to use setcookie again.

I don't know why you'd want to do that though. Why not just check for $_COOKIE["name"] (the cookie that you are making).


Cookies are only available once another request was done. So don’t modify $_COOKIE on your own.

Furthermore, when in your case the cookie exists (i.e. $_COOKIE['test'] is set) you call setcookie again with $cookiekey as its value. But $cookiekey is not defined at that moment so the cookie will be overwritten with an empty string. I guess you want to use $_COOKIE['test'] instead:

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


You could also save yourself all that pain by using PHP's built in session management (examples here) to handle all of this cookie stuff for you.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜