检测时间的代码bug并且优化代码需要完整版phpsession_start; 设置访问次数默认为0if !isset$_SESSIONcount $_SESSIONcount = 0; 访问次数+1$_SESSIONcount++; 判断访问次数是否超过10次if $_SESSIONcount 10 获取用户IP地址或浏览器Cookie $identifier = iss
10) {
// 获取用户IP地址或浏览器Cookie
$identifier = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : $_SERVER['HTTP_COOKIE'];
// 获取当前时间
$now = time();
// 获取明天的时间,加入用户标识,使其更加准确
$tomorrow = strtotime('+1 day', mktime(0, 0, 0, date('m'), date('d'), date('Y'))) . $identifier;
// 判断明天的时间是否已经设置
if (!isset($_SESSION['tomorrow'])) {
$_SESSION['tomorrow'] = $tomorrow;
}
// 判断当前时间是否已经超过明天的时间
if ($now >= substr($_SESSION['tomorrow'], 0, -strlen($identifier))) {
// 重置访问次数为0
$_SESSION['count'] = 0;
// 删除明天的时间,下次访问重新计算
unset($_SESSION['tomorrow']);
// 跳转到其他页面
header('Location: access_limit.php');
exit();
} else {
// 计算还剩余的时间,使用倒计时的方式显示
$remaining_time = $_SESSION['tomorrow'] - $now;
$remaining_hour = floor($remaining_time / 3600);
$remaining_minute = floor(($remaining_time % 3600) / 60);
$remaining_second = $remaining_time % 60;
// 输出提示信息
$remaining_time = sprintf('%02d:%02d:%02d', $remaining_hour, $remaining_minute, $remaining_second);
echo '您今天的访问次数已经达到上限,请于'.$remaining_time.'后再来访问。';
exit();
}
} else {
// 可以继续访问
echo '欢迎访问!';
}
?>
原文地址: https://www.cveoy.top/t/topic/7HO 著作权归作者所有。请勿转载和采集!