携帯電話からのアクセスかコンピュータからのアクセスかを判断する方法は?
現在、インターネット上では 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% 正確であるとは限りません。鍛造することができます。
------解決策---------
学びましょう~~~
------解決策-------
学習 - -
------解決策-------
学習 - --
-----解決策---------
学びました。 。
------解決策------------------
この方法はオペレータに選択してもらいます 確かに簡単ではありません。それを誤解するために。
------解決策------------------
注意。 。 。 。 。 。 。