ホームページ  >  記事  >  バックエンド開発  >  現在のアクセスが携帯電話からかパソコンからかを判断するにはどうすればよいですか?

現在のアクセスが携帯電話からかパソコンからかを判断するにはどうすればよいですか?

WBOY
WBOYオリジナル
2016-06-13 13:51:381095ブラウズ

携帯電話からのアクセスかコンピュータからのアクセスかを判断する方法は?
現在、インターネット上では 3 つの意見があり、その 1 つはブラウザから送信されるユーザー エージェントに基づくものですが、明らかにこの方法は機能しません。携帯電話から送信されるユーザー エージェントのほとんどはリストに記載されていますが、それを認識できない携帯電話はまだ多く、一部のモバイル ブラウザーでさえユーザー エージェントを送信しないし、新しいブランドがユーザー エージェントを送信しないという保証はありません。

以下は php の例ですが、読んだ後はそれがいかに信頼できないかがわかります。

1. function is_wap(){
2. $ua = strto lower($_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(strto lower($_SERVER['REQUEST_URI']),' wap')){
5. return true;
6. }else{
7. return false;
8. }
9. }


もう 1 つは HTTP_ACCEPT の判断ですが、これは非常に複雑です。一般的なブラウザが html をサポートしていない場合は、ブラウザが wml をサポートしており、html をサポートしていないと判断するだけで済みます。ブラウザが wml と html の両方をサポートしている場合、ローエンドの携帯電話では html の前に Wml が配置される可能性がありますが、多くのハイエンドの携帯電話やスマートフォンでは html が適切にサポートされているため、html も表示されます。

これは、BlackBerry

application/vnd.rim.html、
text/html、
application/vnd.wap.xhtml によって送信される HTTP_ACCEPT です。 +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 で十分です。



これらはインターネットから見つけました。別の方法があるかどうかはわかりません/

------解決策----------------------
学習スペース。
そういえば...クライアントのタイプを決定したら、次のステップは何でしょうか?
モバイルブラウザはJavaScriptをサポートしていますか?
------解決策---------
フォローする
------解決策----------------------
ブラウザから直接システムを確認してはどうでしょうか?何
------解決策------
1. js をサポートするかどうか、
2.ブラウザの有効領域解像度
3. 特定の js の実行にかかる時間
4. ユーザー エージェント

ただし、これらのデータは 100% 正確であるとは限りません。鍛造することができます。
------解決策---------
学びましょう~~~
------解決策-------
学習 - -
------解決策-------
学習 - --
-----解決策---------
学びました。 。
------解決策------------------
この方法はオペレータに選択してもらいます 確かに簡単ではありません。それを誤解するために。
------解決策------------------
注意。 。 。 。 。 。 。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。