サーバー側でモバイル ブラウザを検出する方法が必要です。セットアップやメンテナンスをほとんど必要とせずに、(少なくとも) Android、Mobile Safari、Blackberry ブラウザー、および Opera などの代替ブラウザーを正確に検出できる方法が必要です。
少なくともモバイル市場の大部分をカバーしたいと考えています。また、あまり時間がかからないのであれば、事実上すべての市場をカバーしたいと考えています。
サーバー側でモバイル ブラウザを検出する方法が必要です。セットアップやメンテナンスをほとんど必要とせずに、(少なくとも) Android、Mobile Safari、Blackberry ブラウザー、および Opera などの代替ブラウザーを正確に検出できる方法が必要です。
少なくともモバイル市場の大部分をカバーしたいと考えています。また、あまり時間がかからないのであれば、事実上すべての市場をカバーしたいと考えています。
WURLF はモバイル ブラウザー検出の究極の方法であり、PHP APIが利用可能です。
これは非常に使いやすいことがわかりましたphp-mobile-detect
(編集:現在、ブラウザ機能プロジェクトは閉鎖されています。つまり、この回答はオプションではありません)
必要なのは、get_browser()と、ユーザー エージェント文字列をブラウザー/バージョンとその機能にマップする最近の browscap.ini だけです。
通常は最新の browscap.ini バージョンをhttp://browsers.garykeith.com/downloads.aspから入手できます。
少し前にこのライブラリを見つけました:
http://code.google.com/p/mobileesp/
PHP、Java、JavaScript、および C# のバージョンがあります。依存関係のない「軽量」のスマートフォン/タブレット検出ツールであり、定期的に更新されています。コードの品質のいくつかの側面が少し不安定であるため、私はそれについて複雑な気持ちを持っています.
さらに軽量なものが必要な場合は、WordPress の WP Super Cache プラグインに、おそらくスワイプできる長い正規表現文字列が含まれています。
ユーザー エージェント文字列に基づくブラウザ スニッフィングは、常に不安定になります。WURFL を見たところ、数 MB 圧縮されています。それを使うのはやり過ぎです。より良いアプローチは、Web サイトで使用されている上位のデバイスを検出し、それらのデバイス用に設計してから、1 日で終了することです。
ヘッダーを読み取り( PHP でリクエストヘッダーを読み取るにはどうすればよいですか)、これを解析/解釈して「ユーザーエージェント」を読み取るだけで、既存の PHP スクリプトまたは単純な正規表現を見つけることができる場合があります。どのユーザー エージェントがモバイルで、どれが通常の PC/ラップトップであるかを判断するのに役立ちます。
オペレーティング システムを示すため、さまざまなヘッダーが多数あります。さまざまなモバイル OS と同じ数のユーザー エージェント ヘッダーが存在するため、スクリプトにはすべての有効なヘッダーのリストが必要です。
Zend Framework は最近Zend_Http_UserAgent を導入しました。
Wurfl、TeraWurfl、および DeviceAtlas API を介して UserAgent を検出することにより、モバイル デバイスとその機能を判断できます。
簡単なGoogle検索でこれらをピックアップします:
http://mobiforge.com/developing/story/lightweight-device-detection-php
残念ながら、WURFL は商用プロジェクトでは無料ではなくなりました。
しかし、実験的な PHP 実装を備えたOpenDDRがあります。
http://code.google.com/p/hdapi/はどうですか? PHP でのサーバー側のモバイル検出。
以前は、訪問者の IP アドレスと csrf-session 値 (現在の訪問者をカウントするためのもの) を一時的に保存していました。
そして、訪問者がモバイルを使用しているか PC を使用しているかを確認できるという副次的な利点があることに気付きました。モバイルの csrf は、新しいページが読み込まれるたびに変化しますが、PC は変化しません。どちらの場合も IP アドレスは残ります。
確かに、訪問者が 2 回クリックした場合にのみモバイルを検出します。これがどれほど信頼できるかは確認していませんが (実際には必要ないため)、php/サーバー側のみです。