打算统计网站uv,使用cookie来实现
原先错误代码如下:
// 获取UV function getUv(){ #当前url $url= explode('/',$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']); // cookie初始化 Cookie::init(['prefix'=>$url,'expire'=>60*60*24]); if( empty(Cookie::get('access',$url)) || !Cookie::has('access',$url) ){ $uv=1; }else{ $uv=0; } Cookie::set("access",1); //访问过标记 return $uv; }
页面没有报错,查看到chrome浏览器也确实写入了cookie
仔细翻了翻tp5文档关于cookie的前缀
这个前缀必须是字符加上下划线的格式,我之前用了类似xxx.html作为前缀是不被支持的
修改代码如下正常
// 获取UV function getUv(){ #当前url $urlArr= explode('/',$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']); $path = end($urlArr); $pathArr = explode('.',$path); $url = $pathArr[0].'_'; // cookie初始化 Cookie::init(['prefix'=>$url,'expire'=>60*60*24]); if( empty(Cookie::get('access',$url)) || !Cookie::has('access',$url) ){ $uv=1; }else{ $uv=0; } Cookie::set("access",1); //访问过标记 return $uv; }
数据库统计结果预览