当用户访问一页时,我有:

setcookie("firstvisit", time()+3600);


在每个页面的标题中包含的功能文件中,我拥有:

if(isset($_COOKIE['firstvisit'])) {
$run = mysql_query("UPDATE `table` SET `firstvisit` = 1 WHERE `id` = '".$_SESSION['uid']."'");
setcookie("firstvisit", time()-3600);


如果我这样做(并且可行),则意味着该脚本将在用户每次单击该页面时运行。还有其他方法可以做到这一点吗?

最佳答案

在第二次访问时,您的代码只会在数据库中将firstvisit设置为1。这是因为isset($_COOKIE['firstvisit'])必须满足true才能运行查询,并且cookie仅在下一个请求中可用-setcookie()不会添加到$_COOKIE数组中。

// assumes $_SESSION['uid'] is always set

if(!isset($_COOKIE['firstvisit'])) {
    setcookie('firstvisit', time()); //set a cookie containing the timestamp of when this user first visited the page
    $run = mysql_query("UPDATE `table` SET `firstvisit` = 1 WHERE `id` = '".$_SESSION['uid']."'");
}
else {
    //it's not their first visit because the cookie already exists
}


请注意,此逻辑无法在多个页面上使用-Co​​okie会相互覆盖,并且代码将变得不可靠。

08-28 09:00