<?php
/**
* 判斷是否為行動裝置
* @return bool
*/
function is_mobile() {
$user_agent = $_SERVER['HTTP_USER_AGENT'];
// 常見行動裝置 UA 關鍵字庫(持續更新)
$mobile_agents = [
"240x320", "acer", "acoon", "acs-", "abacho", "ahong", "airness",
"alcatel", "amoi", "android", "anywhereyougo.com", "applewebkit/525",
"applewebkit/532", "asus", "audio", "au-mic", "avantogo", "becker",
"benq", "bilbo", "bird", "blackberry", "blazer", "bleu", "cdm-",
"compal", "coolpad", "danger", "dbtel", "dopod", "elaine", "eric",
"etouch", "fly ", "fly_", "fly-", "go.web", "goodaccess", "gradiente",
"grundig", "haier", "hedy", "hitachi", "htc", "huawei", "hutchison",
"inno", "ipad", "ipaq", "ipod", "jbrowser", "kddi", "kgt", "kwc",
"lenovo", "lg ", "lg2", "lg3", "lg4", "lg5", "lg7", "lg8", "lg9",
"lg-", "lge-", "lge9", "longcos", "maemo", "mercator", "meridian",
"micromax", "midp", "mini", "mitsu", "mmm", "mmp", "mobi", "mot-",
"moto", "nec-", "netfront", "newgen", "nexian", "nf-browser",
"nintendo", "nitro", "nokia", "nook", "novarra", "obigo", "palm",
"panasonic", "pantech", "philips", "phone", "pg-", "playstation",
"pocket", "pt-", "qc-", "qtek", "rover", "sagem", "sama", "samu",
"sanyo", "samsung", "sch-", "scooter", "sec-", "sendo", "sgh-",
"sharp", "siemens", "sie-", "softbank", "sony", "spice", "sprint",
"spv", "symbian", "tablet", "talkabout", "tcl-", "teleca", "telit",
"tianyu", "tim-", "toshiba", "tsm", "up.browser", "utec", "utstar",
"verykool", "virgin", "vk-", "voda", "voxtel", "vx", "wap",
"wellco", "wig browser", "wii", "windows ce", "wireless", "xda",
"xde", "zte"
];
$is_mobile = false;
foreach ($mobile_agents as $device) {
if (stripos($user_agent, $device) !== false) {
$is_mobile = true;
break;
}
}
return $is_mobile;
}
<?php
define('THINK_PATH', './CORE/');
if (is_mobile()) {
// 行動裝置:切換至 mobi 模組
define('APP_NAME', 'mobi');
define('APP_PATH', './mobi/');
echo '您是手機端訪問,已切換至行動版模板';
} else {
// PC 端:使用預設 Home 模組
define('APP_NAME', 'Home');
define('APP_PATH', './Home/');
echo '您是 PC 端訪問';
}
define('APP_DEBUG', false);
require THINK_PATH . 'core.php';
Vary: User-Agent,確保 Proxy/CDN 正確快取不同裝置版本雖然 UA 判斷可快速實現裝置分流,但長期維護建議轉向響應式設計或 Server-Side Components (如 React Server Components) 架構。