当用户访问我有一个页面时:
setcookie("firstvisit", time()+3600);
在我所拥有的每个页面的标题中包含的函数文件中:
if(isset($_COOKIE['firstvisit'])) {
$run = mysql_query("UPDATE `table` SET `firstvisit` = 1 WHERE `id` = '".$_SESSION['uid']."'");
setcookie("firstvisit", time()-3600);
如果我这样做(并且它可以工作),这意味着每次用户点击该页面时脚本都会运行。有没有其他方法可以实现这个目标?
答案 0 :(得分:0)
您可以在设置之前检查Cookie是否已预先设置。
if( !isset($_COOKIE['firstvisit']) ){ //if the cookie is not set
//set your cookie
} //skip otherwise
答案 1 :(得分:0)
如果您不想每次都更新该值。检查数据库中的值是否已经存在?
答案 2 :(得分:0)
第二次访问时,您的代码只会在数据库中将 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会相互覆盖,代码将变得不可靠。