有一个页面,可以使用以下三个参数之一访问: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;
答案 0 :(得分:0)
像往常一样,阅读文档已经足够了。 下一页加载后,Cookie在$ _COOKIE数组中可用。所以在我的情况下,如果它存在,我应该将$ latest分配给GET-param值,否则用getLatestCookie()赋值。