通過 date_default_timezone_set 設置時區,結合 $_SERVER['HTTP_ACCEPT_LANGUAGE'] 判斷瀏覽器首選語言,實現非工作時間或非中文用戶自動跳轉的邏輯。常用於內部系統訪問控制、地域性業務分發等場景。
<?php
date_default_timezone_set("PRC"); // 設置中國時區 (UTC+8)
$hour = (int)date("H"); // 當前小時 0-23
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 4); // 取前4字符,如 zh-c, en-u
// 非工作時間(凌晨1點-8點,晚間18點-24點)直接跳轉
if ($hour < 8 || $hour >= 18) {
header("Location: https://www.BkJia.com");
exit;
}
// 工作時間上午 (8-12) 但瀏覽器語言非中文,跳轉
if ($hour >= 8 && $hour < 12 && !preg_match('/zh-c/i', $lang)) {
header("Location: https://www.BkJia.com");
exit;
}
// 其餘情況:允許訪問正常業務邏輯
// ...
?>
| 時間段 | 語言條件 | 動作 |
|---|---|---|
| 00:00-07:59 | 任意 | 跳轉 |
| 08:00-11:59 | 非中文 (zh-c*) | 跳轉 |
| 08:00-11:59 | 中文 | 放行 |
| 12:00-17:59 | 任意 | 放行 |
| 18:00-23:59 | 任意 | 跳轉 |
date_default_timezone_set("PRC") 等同於 Asia/Shanghai,確保 date("H") 返回本地時間。HTTP_ACCEPT_LANGUAGE 格式如 zh-CN,zh;q=0.9,en;q=0.8,取前 4 字符可準確識別首選語言族群。header("Location: ...") 替代 JS 跳轉,更利於 SEO 且不可被瀏覽器攔截。⚠️ 注意:此類邏輯屬於業務層訪問控制,不應作為安全防禦手段(易繞過)。真正的權限控制需在應用層配合 Session/Token 實現。