1. 封装一个访问控制类 AccessControl,将限制访问次数的代码封装在其中,并添加参数 $key 用于识别用户,代码如下:
key = $key; if(isset($_SESSION[$this->key])) { $this->count = $_SESSION[$this->key]['count']; $this->tomorrow = $_SESSION[$this->key]['tomorrow']; } else { $_SESSION[$this->key] = [ 'count' => $this->count, 'tomorrow' => $this->tomorrow ]; } } public function check() { // 访问次数+1 $this->count++; // 判断访问次数是否超过限制次数 if($this->count > $this->limit) { // 判断明天的时间是否已经设置 if(empty($this->tomorrow)) { $this->tomorrow = strtotime('+1 day'); $_SESSION[$this->key]['tomorrow'] = $this->tomorrow; } // 获取当前时间 $now = time(); // 判断当前时间是否已经超过明天的时间 if($now >= $this->tomorrow) { // 重置访问次数为0 $this->count = 0; $_SESSION[$this->key]['count'] = $this->count; // 跳转到其他页面 header('Location: access_limit.php'); exit(); } else { // 计算还剩余的时间 $remaining_time = $this->tomorrow - $now; $remaining_hour = floor($remaining_time / 3600); $remaining_minute = floor(($remaining_time % 3600) / 60); $remaining_second = $remaining_time % 60; // 输出提示信息 $remaining_time = date('H小时i分钟s秒', $remaining_time); echo '您今天的访问次数已经达到上限,请于'.$remaining_time.'后再来访问。'; exit(); } } } } ?>
  1. 封装一个倒计时类 Countdown,用于显示剩余时间,代码如下:
remaining_time = $remaining_time; } public function show() { $remaining_hour = floor($this->remaining_time / 3600); $remaining_minute = floor(($this->remaining_time % 3600) / 60); $remaining_second = $this->remaining_time % 60; echo '剩余时间:'; echo $remaining_hour > 0 ? $remaining_hour.'小时' : ''; echo $remaining_minute > 0 ? $remaining_minute.'分钟' : ''; echo $remaining_second.'秒'; } } ?>
  1. 封装一个样式类 Style,用于美化限制访问页面的样式,代码如下:
'; echo '

访问受限

'; echo '

您今天的访问次数已经达到上限,请明天再来访问。

'; echo '
'; } } ?>

调用代码:

在需要限制访问次数的页面中引用 AccessControl 类和 Countdown 类,并在需要显示倒计时的地方添加倒计时代码,如果访问受限则引用 Style 类美化页面样式,代码如下:

check(); // 检查访问次数是否超限 // 可以继续访问 echo '欢迎访问!'; // 显示剩余时间 if(!empty($access_control->tomorrow)) { $remaining_time = $access_control->tomorrow - time(); $countdown = new Countdown($remaining_time); $countdown->show(); } // 访问受限 Style::access_limit(); ?> 按下面123点建议进行优化分开封装代码改进建议:1 使用用户的IP地址或者浏览器Cookie来识别用户使访问次数计数更加准确;2 使用倒计时的方式来显示剩余时间让用户更加清晰地了解还需要等待多久;3 对访问限制的页面进行样式美化提高用户体验。phpsession_start;设置访问次数默认为0if!isset$_SESSIONcount $_SESSIONcount = 0;访问次数+1$

原文地址: https://www.cveoy.top/t/topic/7C0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录