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