BrowserCheckBehavior.class.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2009 http://thinkphp.cn All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
  8. // +----------------------------------------------------------------------
  9. // | Author: liu21st <liu21st@gmail.com>
  10. // +----------------------------------------------------------------------
  11. defined('THINK_PATH') or exit();
  12. /**
  13. * 浏览器防刷新检测
  14. * @category Extend
  15. * @package Extend
  16. * @subpackage Behavior
  17. * @author liu21st <liu21st@gmail.com>
  18. */
  19. class BrowserCheckBehavior extends Behavior {
  20. protected $options = array(
  21. // 浏览器防刷新的时间间隔(秒)
  22. 'LIMIT_REFLESH_TIMES' => 10,
  23. );
  24. public function run(&$params) {
  25. if($_SERVER['REQUEST_METHOD'] == 'GET') {
  26. // 启用页面防刷新机制
  27. $guid = md5($_SERVER['PHP_SELF']);
  28. // 检查页面刷新间隔
  29. if(cookie('_last_visit_time_'.$guid) && cookie('_last_visit_time_'.$guid)>time()-C('LIMIT_REFLESH_TIMES')) {
  30. // 页面刷新读取浏览器缓存
  31. header('HTTP/1.1 304 Not Modified');
  32. exit;
  33. }else{
  34. // 缓存当前地址访问时间
  35. cookie('_last_visit_time_'.$guid, $_SERVER['REQUEST_TIME']);
  36. //header('Last-Modified:'.(date('D,d M Y H:i:s',$_SERVER['REQUEST_TIME']-C('LIMIT_REFLESH_TIMES'))).' GMT');
  37. }
  38. }
  39. }
  40. }