導航:首頁 > 編程語言 > php判斷是手機訪問還是電腦訪問

php判斷是手機訪問還是電腦訪問

發布時間:2024-12-26 15:26:53

A. 如何用php判斷一個客戶端是手機還是電腦

網上現在有三種觀點, 一種是基於瀏覽器發送的 User-Agent, 但明顯這種方法是行不通的, 雖然有人列出了大多數的手機發送的User-Agent, 但依然會有很多手機無法識別, 甚至有些手機瀏覽器不發送User-Agent, 而且也不能保證以後就不會出新牌子.

下面是一個php的例子, 看過之後你就會知道有多麼不可靠.

1. function is_wap(){
2. $ua = strtolower($_SERVER['HTTP_USER_AGENT']);
3. $uachar = "/(nokia|sony|ericsson|mot|samsung|sgh|lg|sie|philips|panasonic|alcatel|lenovo|cldc|midp|wap|mobile)/i";
4. if(($ua == '' || preg_match($uachar, $ua))&& !strpos(strtolower($_SERVER['REQUEST_URI']),'wap')){
5. return true;
6. }else{
7. return false;
8. }
9. }

另外一種是判斷HTTP_ACCEPT, 這種應該相對可靠一點, 不過HTTP_ACCEPT是非常復雜的, 如果一般的不支持html的瀏覽器還好說, 你只要判斷瀏覽器支持wml並且不支持html就可以, 但如果瀏覽器同時支持wml和html那就難辦了, 低端手機可能會將wml放到html的前面, 但是很多高端手機或者智能手機對html的支持很好, 所以html也會出現在wml前面.

這是黑莓手機發送的HTTP_ACCEPT

application/vnd.rim.html,
text/html,
application/vnd.wap.xhtml+xml,
text/vnd.sun.j2me.app-descriptor,
image/vnd.rim.png,image/jpeg,
application/x-vnd.rim.pme.b,
application/vnd.rim.ucs,
image/gif;anim=1,
application/vnd.rim.jscriptc;v=0-8-8,
application/x-javascript,
application/vnd.rim.css;v=1,
text/css;media=handheld,
application/vnd.wap.wmlc;q=0.9,
application/vnd.wap.wmlscriptc;q=0.7,
text/vnd.wap.wml;q=0.7,
*/*;q=0.5

誇張吧? 不過的確是很標準的, 開發人員可以根據這個得到很多信息, 但很多手機都沒這么標準的, 如果你查看IE或者FF的HTTP_ACCEPT你會發現它很短.

text/html,
application/xhtml+xml,
application/xml;q=0.9,
*/*;q=0.8

同樣, 給你個php的例子.

if (isset($_SERVER['HTTP_ACCEPT']) &&
(strpos($_SERVER['HTTP_ACCEPT'],'vnd.wap.wml')!==FALSE)
&& (strpos($_SERVER['HTTP_ACCEPT'],'text/html')===FALSE ||
(strpos($_SERVER['HTTP_ACCEPT'],'vnd.wap.wml') <
strpos($_SERVER['HTTP_ACCEPT'],'text/html'))
)) {//手機訪問
readfile('index.wml');
} else readfile('index.htm');

原理:如果瀏覽器支持WML、而且[不支持HTML]或[WML優先於HTML],則判定為手機。但實際上這個原理是不正確的.

還有一種是說判斷網關或者IP什麼的, 但我個人認為這個很不可靠, 手機的聯網方式很多, 比如我開發的時候就是用模擬器的.這個應該不用什麼例子了, REMOTE_ADDR 就足夠了.

以上是我今天上午的工作成果, 但實際上還是沒有找到完美的解決方案, 先寫這么多, 有問題請補充或者發送消息給我, 如果你有更好的辦法希望可以分享給我, 謝謝.

B. ThinkPHP中判斷是手機端還是電腦端訪問的方法

一般是通過訪問的時候請求來源的header頭文件信息來進行判斷的,譬如Android的手機訪問的話一般都會在hedear頭信息裡面帶上Android這樣的信息,同理Iphone、windows phone都會帶。

閱讀全文

與php判斷是手機訪問還是電腦訪問相關的資料

熱點內容
哪個app充值可以用銀聯二維碼 瀏覽:563
女程序員和孩子玩 瀏覽:837
程序員蘇州武漢 瀏覽:754
大腳插件如何切換安卓 瀏覽:941
python課設製作年歷 瀏覽:405
明文在pdf 瀏覽:750
鄭永令pdf 瀏覽:122
cad命令行坐標輸入 瀏覽:781
編譯原理csdn博客 瀏覽:194
想在深圳買房關注哪個app 瀏覽:913
國際體驗服為什麼伺服器載入失敗 瀏覽:690
php介面用處 瀏覽:394
想推廣app去哪裡找 瀏覽:258
phpcmysql 瀏覽:123
安卓手機的百度carlife怎麼連接車 瀏覽:138
編譯安裝py 瀏覽:162
pythonchar轉int 瀏覽:220
基於單片機的多組密碼鎖設計論文 瀏覽:108
華為雲如何升級雲伺服器 瀏覽:213
生活垃圾壓縮直運站 瀏覽:751