首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 根據時區與瀏覽器語言實現訪問控制與跳轉

     編輯:PHP 相關知識

基於時間段與語言偏好的訪問限制策略

通過 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 且不可被瀏覽器攔截。

擴展建議

  1. 引入 GeoIP 庫(MaxMind)按國家/城市精準分發,替代語言啟發式判斷。
  2. 增加白名單 IP 機制,允許管理員隨時訪問。
  3. 記錄被攔截請求日誌(IP、時間、語言、UA),便於審計與策略調優。
  4. 提供友好提示頁面而非直接跳轉,提升用戶體驗。

⚠️ 注意:此類邏輯屬於業務層訪問控制,不應作為安全防禦手段(易繞過)。真正的權限控制需在應用層配合 Session/Token 實現。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved