手機網頁教學-自動切換電腦或手機版(PHP、ASPX)

梅問題-行動網頁教學-自動切換電腦與手機版本
  現在隨著行動上網愈來愈夯,各大入口網站也紛紛的開始製作行動裝置的網頁,雖然說新一代智慧型手機中的瀏覽器,與電腦中所用的瀏覽器幾乎相同,皆可正常的瀏覽各大網站,但由於手機的螢幕與電腦相比,差異相當的大,以至於當使用手機來瀏覽電腦網頁時,就得手指放大魯來魯去,才可找到自已所要的資訊,這對於手機瀏覽上有些不便,所以會發現到,各大網站則會專門針對手機的版面加以設計,讓版面符合手機的瀏覽模式,除此之外使用者用手機瀏覽時,網頁也會自動切換為手機版本,而要這要怎麼辦到呢? 其實這需要透過Server端的程式來作一點小判斷,就可以作到自動的切換,這邊梅干整理一下手邊的資料, 分別針對PHP與ASPX作介紹。

PHP版本判斷:
$mobile_browser = '0';
 
if(preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone)/i', strtolower($_SERVER['HTTP_USER_AGENT']))) {
    $mobile_browser++;
}
 
if((strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml')>0) or ((isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE'])))) {
    $mobile_browser++;
}    
 
$mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'],0,4));
$mobile_agents = array(
    'w3c ','acs-','alav','alca','amoi','audi','avan','benq','bird','blac',
    'blaz','brew','cell','cldc','cmd-','dang','doco','eric','hipt','inno',
    'ipaq','java','jigs','kddi','keji','leno','lg-c','lg-d','lg-g','lge-',
    'maui','maxo','midp','mits','mmef','mobi','mot-','moto','mwbp','nec-',
    'newt','noki','oper','palm','pana','pant','phil','play','port','prox',
    'qwap','sage','sams','sany','sch-','sec-','send','seri','sgh-','shar',
    'sie-','siem','smal','smar','sony','sph-','symb','t-mo','teli','tim-',
    'tosh','tsm-','upg1','upsi','vk-v','voda','wap-','wapa','wapi','wapp',
    'wapr','webc','winw','winw','xda','xda-','Googlebot-Mobile');
 
if(in_array($mobile_ua,$mobile_agents)) {
    $mobile_browser++;
}
 
if (strpos(strtolower($_SERVER['ALL_HTTP']),'OperaMini')>0) {
    $mobile_browser++;
}
 
if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']),'windows')>0) {
    $mobile_browser=0;
}
 
if($mobile_browser>0) {
	header("Location: mobile.php"); //手機版
}else {
	header("Location: pc.php");  //電腦版
}

ASPX版本判斷:
	 protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.Headers["user-agent"] != null && Request.Headers["user-agent"].ToLower().ToString().IndexOf("windows") != -1)
        {                        
            Response.Redirect("pc.aspx"); //電腦版 
        }
        else
        {
            Response.Redirect("mobile.aspx"); //手機版
        }
    }

之後上傳到網頁空間中,當用手機瀏覽時,就會自動切換到手機版的網頁,若是使用電腦時,就會自動切換為電腦的版本,經梅干測試的結果,目前在iPhoneAndriod平台皆可正常切換,由於手邊沒有WinPhone,也請各位有WinPhone的朋友幫忙測試看看囉!
梅問題-行動網頁教學-自動切換電腦與手機版本
梅問題-行動網頁教學-自動切換電腦與手機版本

[範例預覽-ASPX版本] [範例預覽-PHP版本] [範例下載]
由於行動裝置不斷的推陳出新,所以檔頭也會有所不同,因此若發現不足時,可至「Detect Mobile Browsers」網站中下載,裡面有更完整的資料,與支援更多的網頁語法。

相關文章

表單按鈕不套用iPhone內建的圓角與漸層樣式效果

表單按鈕不套用iPhone內建的圓角與漸層樣式效果

MakeAppicon 線上立即產生iOS、Android所需的各種圖示大小

MakeAppicon 線上立即產生iOS、Android所需的各種圖示大小

《Pure》羽量級自適應網頁版型框架 (RWD Framework)

《Pure》羽量級自適應網頁版型框架 (RWD Framework)

CSS教學-【Responsive 網頁自適版型】Media Screen 一覽表

CSS教學-【Responsive 網頁自適版型】Media Screen 一覽表

手機網頁必知-設定書籤網址建立到手機桌面中的APP圖示

手機網頁必知-設定書籤網址建立到手機桌面中的APP圖示




回應本篇 »

(姓名)*必填
(信箱)*必填
(網站)

※PS: 因梅干時間有限,教學網中所分享的主題繁多(所遇狀況也很多),可能無法一一回答各位,不便之處還請見諒。
※PS: 本教學網不提供「破解檔」、「註冊機」或「註冊碼」等資訊,請勿利用留言索取檔案。

共 57 梅留言

  • 第2梅
    徐玉珉 說道:

    請問:
    1.在html裡面鑲嵌php是放在body開頭嗎?ex:<?php ….
    2.在Detect Mobile Browder裡面抓到的那一串程式碼是放在$mobile_agents = array後面嗎?

    回應:
    這需加在index.php這一頁中
  • 第1梅
    吳小穎 說道:

    老師,可以給多點方向嗎? 我實在看不懂!

    回應:
    關於這部分,你可以直接將上方的碼貼到你的php或apsx的頁面最上方,就可自動導向了