当用户访问一页时,我有:
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
}
请注意,此逻辑无法在多个页面上使用-Cookie会相互覆盖,并且代码将变得不可靠。