2012-02-20 37 views
0

我有这样的代码在这里:跟踪用户的页面视图的使用cookie的PHP

setcookie('visitcount',1+$_COOKIE['visitcount'],time()+60*60); 
$visitcount = $_COOKIE['visitcount']; 
print "Number of views: ".$visitcount; 

我试图做的是跟踪页面视图使用的cookie当前浏览器。我对这段代码感到有点困惑,因为当网页访问者第一次浏览网页时,结果回来说“视图数量:0”,当它应该是“视图数量:1”时。

这是为什么?我认为用上面的setcookie代码,$ visitcount变量应该有一个值。但事实并非如此?

+0

你可以使用谷歌分析 - 它的漂亮:-) – 2012-02-20 02:30:35

回答

1

这条线:

setcookie('visitcount',1+$_COOKIE['visitcount'],time()+60*60); 

在发送值 “1 + $ _ COOKIE [ 'visitcount']”(这是= 1)到客户端。

下一行$ _COOKIE ['visitcount']仍然是初始值(即第一次是'0'),因为它来自请求。您需要从下一个请求中接收更新的COOKIE以获取增量结果。

+0

如果是这样的话,你告诉我的是,setcookie函数只发生在客户端 - 服务器请求期间刷新web浏览器屏幕后,但在第一次web负载请求?这意味着如果是这样的话,我将不得不将$ visitcount默认值设置为1。 – awongCM 2012-02-20 03:51:26

+0

是的。服务器(PHP)将cookie发送给客户端。在下一个请求时(即当客户端发送它的cookie时),服务器端cookie的值被更新。服务器不应该更改请求cookie值,只发送更新的值。因此,将初始值设置为'1'是合理的。 – JScoobyCed 2012-02-20 04:47:53

+0

感谢JScoobyCed。 – awongCM 2012-02-21 03:56:01