平时在开发过程中经常会遇到统计访问网站或者是blog的用户信息,而且要求在某一个时间段内再次访问不要求计数! 比如说我有个blog, 其他用户来访问, 当用户第一次来访问的时候记录数据库,同一天再次访问则不再记录,24小时之后再来访问又将再次记录。
这种问题的难点主要再于24小时,要判断是否是同一天访问。解决这种问题的方案之一就是用cookies!首先要判断来访者是否来访问过,而且上次访问过的时间和现在时间是否相差24小时, 如果没有访问过或者访问过的时间和现在相差24小时就将访问者的信息插入数据库,再把用户的时间写入cookies。 否则就不用管!
主要流程就是这样! 那么怎么判断访问者是否来过呢? 我是这样来判断的如果用户来过了我再插入数据库之后把这个用户访问的时间time()写入cookies具体如下: 、
setcookie($userid, time(), time()+24*3600, '/', $_SERVER['SERVER_NAME']);
$userid是用户在数据库中的id号一般用户登录后存在session里,用他作为cookies的名字因为他是唯一的。
time()是cookies的值。
time()+24×3600 设定 cookie 在一天后失效。
/ 指cookie 就在整个 domain 内有效。
$_SERVER['SERVER_NAME']指该 cookie 有效的域名。
所以程序是这样的:
if(!isset($_COOKIE[$userid]) || time()- $_COOKIE[$userid] > 24*3600) {
//插入数据库语句
setcookie($userid, time(), time()+24*3600, '/', $_SERVER['SERVER_NAME']);
}
这种问题的难点主要再于24小时,要判断是否是同一天访问。解决这种问题的方案之一就是用cookies!首先要判断来访者是否来访问过,而且上次访问过的时间和现在时间是否相差24小时, 如果没有访问过或者访问过的时间和现在相差24小时就将访问者的信息插入数据库,再把用户的时间写入cookies。 否则就不用管!
主要流程就是这样! 那么怎么判断访问者是否来过呢? 我是这样来判断的如果用户来过了我再插入数据库之后把这个用户访问的时间time()写入cookies具体如下: 、
setcookie($userid, time(), time()+24*3600, '/', $_SERVER['SERVER_NAME']);
$userid是用户在数据库中的id号一般用户登录后存在session里,用他作为cookies的名字因为他是唯一的。
time()是cookies的值。
time()+24×3600 设定 cookie 在一天后失效。
/ 指cookie 就在整个 domain 内有效。
$_SERVER['SERVER_NAME']指该 cookie 有效的域名。
所以程序是这样的:
if(!isset($_COOKIE[$userid]) || time()- $_COOKIE[$userid] > 24*3600) {
//插入数据库语句
setcookie($userid, time(), time()+24*3600, '/', $_SERVER['SERVER_NAME']);
}