如何在不重新加载页面的情况下获取最新的cookie ID?

时间:2015-09-15 14:54:49

标签: php cookies

有一个页面,可以使用以下三个参数之一访问:ref1,ref2和ref3。每次页面脚本设置几个cookie来存储ref-param及其创建时间。之后它应该找到最新的并准备好处理它。 例如,如果我有" ref1"在访问页面之前最新的cookie并访问

script.php?ref2=1 

它应该回应

latest is ref2

但只有在额外重新加载页面后,它才能正常工作(回应正确的最新cookie)。这段代码有什么问题?

if ($_GET['ref1']) {
    setcookie('ref1', 'ref1');
    setcookie('ref1_dt', time());
}

if ($_GET['ref2']) {
    setcookie('ref2', 'ref2');
    setcookie('ref2_dt', time());
}

if ($_GET['ref3']) {
    setcookie('ref3', 'ref3');
    setcookie('ref3_dt', time());
}

function getLatestCookie() {
    $refs = array(
        'ref1' => $_COOKIE['ref1_dt'],
        'ref2' => $_COOKIE['ref2_dt'],
        'ref3' => $_COOKIE['ref3_dt']
    );
    $maxs = array_keys($refs, max($refs));
    return $maxs[0];
}

$latest = getLatestCookie();
setcookie('latest', $latest, time() + 60 * 60 * 24 * 30, "/");
echo "latest is " . $latest;

1 个答案:

答案 0 :(得分:0)

像往常一样,阅读文档已经足够了。 下一页加载后,Cookie在$ _COOKIE数组中可用。所以在我的情况下,如果它存在,我应该将$ latest分配给GET-param值,否则用getLatestCookie()赋值。