PHP Cookie记录用户历史浏览信息的代码

购物类网站有时候需要了解用户最近的需求,收集和推送用户的查看记录成为了大部分此类的网站不可缺少的功能,下面是本人在开发项目中自己写的方法,一来留有保存,二来和大家分享。

【基础】

Cookie常用方法:

$_COOKIE[‘RecordLuHuiDUDU'] 得到Cookie

setcookie(‘RecordLuHuiDUDU',”,time()-3600*24*30); setcookie(字段名,数据,过期时间); 设置Cookie

【注意】

重新设置Cookie需要使之前的Cookie失效,删除Cookie也是同样的方法:

setcookie(‘RecordLuHuiDUDU',”,time()-3600*24*30);

【代码示例】

  1. /**
  2. * 将用品id存入Cookie中
  3. *
  4. * @param $id
  5. * @return bool
  6. */
  7. public function setCookieRecord($id){
  8. $data = null;
  9. if(!isset($_COOKIE['RecordLuHuiDUDU'])){
  10. if(!emptyempty($id)) {
  11. $data[0] = array(
  12. 'id' = $id,
  13. 'time' = date('Y-m-d H:i:s', time())
  14. );
  15. }else{
  16. return false;
  17. }
  18. }else{
  19. if(!emptyempty($id)) {
  20. $data = $_COOKIE['RecordLuHuiDUDU'];
  21. setcookie('RecordLuHuiDUDU','',time()-3600*24*30);
  22. $data = json_decode($data, true);
  23. $num = count($data);
  24. //判断是否重复
  25. $judge = false;
  26. foreach($data as $index => $value){
  27. if($data[$index]['id'] == $id){
  28. $data[$index]['time'] = date('Y-m-d H:i:s', time());
  29. $judge = true;
  30. }
  31. }
  32. if($judge){
  33. setcookie('RecordLuHuiDUDU',json_encode($data),time()+3600*24*30);
  34. return true;
  35. }
  36. if($num == 10){
  37. for($i = 0; $i < 9; $i++){ $data[$i] = $data[$i+1]; } $data[9] = array( 'id' => $id,
  38. 'time' => date('Y-m-d H:i:s', time())
  39. );
  40. }
  41. if($num <10){ $data[$num] = array( 'id' => $id,
  42. 'time' => date('Y-m-d H:i:s', time())
  43. );
  44. }else {
  45. return false;
  46. }
  47. }
  48. }
  49. setcookie('RecordLuHuiDUDU',json_encode($data),time()+3600*24*30);
  50. return true;
  51. }