使用Cookie检查是否有人访问了某个页面

时间:2013-09-13 01:14:39

标签: php mysql cookies

当用户访问我有一个页面时:

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

在我所拥有的每个页面的标题中包含的函数文件中:

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

如果我这样做(并且它可以工作),这意味着每次用户点击该页面时脚本都会运行。有没有其他方法可以实现这个目标?

3 个答案:

答案 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会相互覆盖,代码将变得不可靠。