You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PHP实现按固定时间段将访客重定向到不同URL

代码问题排查

原有代码无法正常运行的核心问题如下:

  • 使用date("h:i")获取的是12小时制时间,会出现下午时段判断错误的问题,应该替换为24小时制的H:i格式
  • 代码中存在echo、var_dump等输出语句,会提前发送响应头,导致后续header()跳转语句失效
  • 后续的概率数组生成逻辑完全错误,无意义且会触发数组下标越界报错
  • 未添加默认跳转规则,当时间不在你定义的所有时段范围内时,$urls变量未定义会触发致命错误
  • 实体转义符>、"等是HTML转义后的内容,在PHP代码中要还原为正常的符号

可直接使用的修复后代码

这段代码同时支持你要的「固定时间段跳转」和「每10分钟循环跳转」两种模式,按需选择配置即可:

<?php
// 配置区域
// 模式1:自定义固定时间段跳转(不需要就注释掉这段,启用模式2)
$timeRules = [
    '06:10-06:20' => 'https://google.com',
    '06:20-06:30' => 'https://gmail.com',
    // 按格式继续加其他时间段规则即可
];
// 模式2:每N分钟循环跳转(不需要就注释掉这段,启用模式1)
// $cycleMinutes = 10; // 每10分钟换一次跳转地址
// $cycleUrls = [
//     'https://google.com',
//     'https://gmail.com',
//     // 按顺序加要循环跳转的地址即可
// ];
$defaultUrl = 'https://example.com'; // 所有规则都不匹配时的默认跳转地址

// 逻辑执行区域
date_default_timezone_set('Asia/Shanghai'); // 替换为你所在的时区,避免时间判断偏差
$currentTime = date('H:i');
$targetUrl = $defaultUrl;

// 执行模式1逻辑
if (isset($timeRules) && !empty($timeRules)) {
    foreach ($timeRules as $timeRange => $url) {
        list($start, $end) = explode('-', $timeRange);
        if ($currentTime >= $start && $currentTime < $end) {
            $targetUrl = $url;
            break;
        }
    }
}
// 执行模式2逻辑
elseif (isset($cycleMinutes) && !empty($cycleUrls)) {
    $currentTimestamp = time();
    $cycleSeconds = $cycleMinutes * 60;
    $cycleIndex = floor($currentTimestamp / $cycleSeconds) % count($cycleUrls);
    $targetUrl = $cycleUrls[$cycleIndex];
}

// 执行跳转
header('Location: ' . $targetUrl);
exit();
?>

使用说明

  • 如果要使用固定时间段跳转,保留$timeRules配置段,注释掉$cycleMinutes和$cycleUrls的配置,按示例格式添加你的时间段和对应跳转地址即可
  • 如果要使用每N分钟循环跳转,注释掉$timeRules配置段,保留$cycleMinutes和$cycleUrls配置,设置你要的循环间隔和跳转地址列表即可
  • 注意修改时区配置为你实际所在地的时区,避免时间判断出现偏差
  • 代码上传到你的域名根目录命名为index.php即可生效

内容的提问来源于stack exchange,提问作者Dvsh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 23:06:03