台灣最大程式設計社群網站
線上人數
740
 
會員總數:245218
討論主題:189090
歡迎您免費加入會員
討論區列表 >> PHP >> 判斷手機網頁或電腦網頁
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
判斷手機網頁或電腦網頁
價值 : 10 QP  點閱數:2316 回應數:8

樓主

andywu
門外漢
0 1
48 6
發送站內信

最近想讓網頁能夠自己判斷是手機還是在PC上,因次在網路上找相關程式碼,整整花了2天時間,累了半死,也測試很多不同方式都沒成功!




搜尋相關Tags的文章: [ 網頁轉手機或PC ] ,
本篇文章發表於2016-08-18 07:59
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
作者回應

andywu
檢舉此回應
<?php
function mobile_check(){
$mobile_browser = false;
$user_agent = $_SERVER['HTTP_USER_AGENT'];
$accept = $_SERVER['HTTP_ACCEPT'];
if(preg_match('/(acs|alav|alca|amoi|audi|aste|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-)/i',$user_agent)){
$mobile_browser = true;
}elseif(preg_match('/(dang|doco|erics|hipt|inno|ipaq|java|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-)/i',$user_agent)){
$mobile_browser = true;
}elseif(preg_match('/(maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|opwv)/i',$user_agent)){
$mobile_browser = true;
}elseif(preg_match('/(palm|pana|pant|pdxg|phil|play|pluc|port|prox|qtek|qwap|sage|sams|sany)/i',$user_agent)){
$mobile_browser = true;
}elseif(preg_match('/(sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo)/i',$user_agent)){
$mobile_browser = true;
}elseif(preg_match('/(teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|w3cs|wap-|wapa|wapi)/i',$user_agent)){
$mobile_browser = true;
}elseif(preg_match('/(wapp|wapr|webc|winw|winw|xda|xda-)/i',$user_agent)){
$mobile_browser = true;
}elseif(preg_match('/(up.browser|up.link|windowssce|iemobile|mini|mmp)/i',$user_agent)){
$mobile_browser = true;
}elseif(preg_match('/(symbian|midp|wap|phone|pocket|mobile|pda|psp)/i',$user_agent)){
$mobile_browser = true;
}
if((strpos($accept,'text/vnd.wap.wml')>0)||(strpos($accept,'application/vnd.wap.xhtml+xml')>0)){
$mobile_browser = true;
}
return $mobile_browser;

}



if(mobile_check()){

header('Location: http://m.01h.net/');

}else{

header('Location: http://www.01h.net/');

}
?>
本篇文章回覆於2016-08-18 07:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

andywu
檢舉此回應
把它以上的語法存成index.php,然後放在網站根目錄之下來執行是可以的,但是如果要應用在xoops網頁上,不知道在貼在哪裡(因為xoops網站內容太龐大),有哪位大大可以幫忙解答!
本篇文章回覆於2016-08-18 09:03
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
不錯的參考

蒼天浩月
檢舉此回應
一進來 先判斷是否為手機或是電腦
基本上 放在html標簽上面就可以了

//手機瀏覽判斷
function check_mobile(){
$regex_match="/(nokia|iphone|android|motorola|^mot\-|softbank|foma|docomo|kddi|up\.browser|up\.link|";
$regex_match.="htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|";
$regex_match.="blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam\-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|";
$regex_match.="symbian|smartphone|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte\-|longcos|pantech|gionee|^sie\-|portalmmm|";
$regex_match.="jig\s browser|hiptop|^ucweb|^benq|haier|^lct|opera\s*mobi|opera\*mini|320x320|240x320|176x220";
$regex_match.=")/i";
return preg_match($regex_match, strtolower($_SERVER['HTTP_USER_AGENT']));
}
if (check_mobile())
{ //如果是手機瀏覽,則執行此段語法

header('Location: searchEvent_Mobile.php');
}
<html>
.....
</html>
本篇文章回覆於2016-08-18 10:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
最有價值解答

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
to:蒼天
你的解答有點答不及義。
那段function碼是php程式吧。
你這樣回答會讓人家誤會處理的模式的。因為你也沒有<?php ..... ?>這樣的間隔
回答問題是很好的。但盡量用人家可以了解的方式去回答會比較好。



to:andywu

一般來說首先你得先將其function放到其共用功能庫。
xoops來講。其共用功能庫是寫在include/functions.php內
這支是會每次就自動載入的。所以你先將其mobile_check函數放在這堥荂C就可以在任何頁面取用了。

再來就是樣板的如何應用。
一般會有多種判斷的方式。

最簡單的就是寫在index.php。(反正每次都會載入這個)
只是如果放在這堙C其實是不適合用轉頁的方式來處理了(會變成無限轉頁)
一般是建立額外的風格。然後將風格參數自動轉換成手機用的風格就行了。

如果真不會的話。我就會建議另寫一個外部控制。先將原來的index.php改成另一個名稱。(但記得得要將xoops內的預設首頁也要跟著修改)
然後再建立一個新的index.php來配合轉頁處理。

如果功力過的話。給你一個其插件。
http://www.tad0616.net/modules/tadnews/index.php?nsn=170
這是可以自動處理的方式。
不過我有大略看了一下說明。要掛入可能需要一些功力。且也需要多重樣式了。

本篇文章回覆於2016-08-18 12:19
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

andywu
檢舉此回應
謝謝浩瀚星空與蒼天
本篇文章回覆於2016-08-19 06:11
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

andywu
檢舉此回應
to 蒼天
你的語法很簡潔,請問header('Location: searchEvent_Mobile.php');這段語法是不用給手機網頁的網址嗎?
本篇文章回覆於2016-08-19 06:43
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

andywu
檢舉此回應
終於成功了!我照著浩瀚星空的提議,把語法放入include/functions.php內,但是怕網頁無限空轉就把else{
header('Location: http://www.01h.net/'); 整個刪除,其他都放在functions.php的最後面,結果竟然可以了!
也感謝蒼天的提供(你的語法也給我靈感)
本篇文章回覆於2016-08-19 07:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
functions.php 最好就只放funtion就好。不要放其它的運行程式。

這在程式上運行可是會有問題的。
本篇文章回覆於2016-08-19 11:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.