A-A+

PHP怎么记录用户停留页面的时间

2019年10月15日 PHP技术文章 暂无评论 阅读 0 views 次

一个比较奇葩的要求,需要在TP中记录用户停留访问的时间,而TP已经生成了纯HTML静态网页,在网页中添加时间记录是需要PHP文件配合的0,时间记录是要写在PHP文件里面的,而包含PHP文件的是JS引入,这就好比网页中的浏览数一个道理,好了,我们先看一下,HTML网页中的JS文件如下:

  1. <script>  
  2.   
  3. var dt1 = new Date();  
  4.   
  5. window.onbeforeunload = function(){  
  6.   
  7.   var dt2 = new Date();  
  8.   
  9.   var ms = dt2.getTime() - dt1.getTime();  
  10.   
  11.   var img = new Image();  
  12.   
  13.   img.src = 'log.php?stay_ms=' + ms;  
  14.   
  15. }  
  16.   
  17. </script>  

这里我们包含了一个 log.php 的时间文件,记录停留时间的PHP文件如下:

  1. $refer = '';  
  2.   
  3. if (isset($_SERVER['HTTP_REFERER']))  
  4.   
  5. {  
  6.   
  7.   $refer = $_SERVER['HTTP_REFERER'];  
  8.   
  9. }  
  10.   
  11. $user_agent = '';  
  12.   
  13. if (isset($_SERVER['HTTP_USER_AGENT']))  
  14.   
  15. {  
  16.   
  17.   $user_agent = $_SERVER['HTTP_USER_AGENT'];  
  18.   
  19. }  
  20.   
  21. $ip = $_SERVER['REMOTE_ADDR'];  
  22.   
  23. if (isset($_GET['stay_ms']))  
  24.   
  25. {  
  26.   
  27.   $log = '[' . date("Y-m-d H:i:s") . '] ' . $ip . ' ' . $refer . ' @ ' . number_format($_GET['stay_ms']) . "ms\r\n";  
  28.   
  29.   file_put_contents("log/log_" . date("Y-m-d") . ".txt"$log, FILE_APPEND);  
  30.   
  31. }  
  32.   
  33. if ($_SERVER['QUERY_STRING'] == '' || isset($_GET['day']))  
  34.   
  35. {  
  36.   
  37.   $day = isset($_GET['day']) ? $_GET['day'] : date("Y-m-d");  
  38.   
  39.   $file = "log/log_" .$day . ".txt";  
  40.   
  41.   if (file_exists($file))  
  42.   
  43.   {  
  44.   
  45.     $log = file_get_contents($file);  
  46.   
  47.     echo nl2br($log);  
  48.   
  49.   }  
  50.   
  51. }  

这里把用户停留页面的时间生成了一个log 的 txt 文件,如果相要记录在数据库里面的话,直接在PHP中写逻辑就可以了,这里的逻辑是所有用户的访问时间,如果我们要记录单个会员用户的话,同样在PHP中写逻辑就OK了。

标签:

给我留言