如何获得最新的cookie id,而无需额外的页面重新加载


How to get the latest cookie id without additional page reloading?

有一个页面,可以用三个参数之一访问: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;

像往常一样,阅读文档就足够了。cookie在$_COOKIE数组中可在下次页面加载后使用。所以在我的例子中,我应该将$latest赋值给get参数值,如果它存在,否则用getLatestCookie()赋值。