- ベストアンサー
PHPによるスマートフォン判別方法とは?
- PHPを使用してスマートフォンを判別する方法を教えてください。
- ユーザーエージェントではPCからの偽装が可能なため、ホスト名での判別方法を考案しています。
- 具体的には、スマートフォンのホスト名をチェックして、panda-world.ne.jpであればスマートフォンと判断したいです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
スマホかPCかの判別をWebサーバ側で行うのは実質的に不可能です。 Wi-Fi経由を排除して、携帯回線からのアクセスだけに限定するのであれば、MNO大手3社は接続元のIPアドレスを公開しているので、IPアドレスで制限を掛ける事ができます。 https://www.nttdocomo.co.jp/service/developer/smart_phone/spmode/ http://www.au.kddi.com/developer/android/kaihatsu/network/ https://www.support.softbankmobile.co.jp/partner/home_tech1/
その他の回答 (4)
- tracer
- ベストアンサー率41% (255/621)
> すみません、お二人の方に同じ補足します。 > いいのです、問題ですから、 ご自身で気づかれているのかどうかわかりませんが、知りたいことと、質問タイトル、質問文章はかなり異なります。「PHPによるスマートフォン判別」が主題になっているのですから、当然、それに対して知見が集まります。事実、3人が3人ともそれについて回答しています。従って、質問者さんがとるべき行動は「補足」ではなく「訂正」であり、質問そのものが誤っていたことを認めるべきです。 >PHPについては、あまり詳しくないので、 他の言語なら分かるような書き方をされていますが、質問されていることはどの言語でも共通で、「正規表現」と呼ばれるとても基本的なことです。英語で調べるなら「regex」でしょう。つまり、この単語さえ知っていれば、瞬時にGoogleが教えてくれる類の内容です。
補足
PHPについては、あまり詳しくないので、 「panda-world.ne.jp」はスマートフォンだと判断したいのですが どのようなロジックになるのか教えて頂きたいのですが、 よろしくお願い致します 最初にこのように書いてあると思いますが 最初からロジックを聞いてますよね。 返信が遅れましたが、自分で調べてわかりました。
- 777kame777
- ベストアンサー率48% (241/493)
他の方々からも既に出ていますがホストで判断は難しいのでやめといたほうが良いです、どう考えてもこのご時世実用的には程遠いソリューションです。 それよりも#2さんが言うとおりスマートフォンでの識別はタッチ判別とかにした方が良いと思います。 以下参考URL http://serima.co/blog/?p=373 ちなみにやろうと思えば上記ホストのはwifiで特定できなくなり、UAもタッチ判別も偽装は可能です。 そこまでスマートフォンの制御をされたい場合はWEBサービスではなくてアプリを使ったほうが良いと思います。
補足
皆さん、私の思っている以上の回答を頂ける事は有難いのですが、 謎解きの問題なので、詳細を書くと、挑戦者は、まずスマートフォンで qrコードであるページみて頂いて、私がホストを確認、それがスマートフォンのホストなら、問題を見れるようにします。 挑戦する人も数十人程度なので数百人になるかもしれないですが。 ロジックの方も、時間はかかりましたが何とかわかりました。
- tracer
- ベストアンサー率41% (255/621)
思ったことがそのままNo.1さんによって書かれていたので笑いましたw 結論から言うと、完全に判別するのは不可能です。 No.1さんも書かれていますが、まず、wifi経由のスマホがかなり多いことと、テザリング経由でのPCアクセスも考えられるため、質問者さんの案は一切機能しないでしょう。 冒頭で述べたように、完全に判別する方法は存在しないので、いろいろ判別条件を複合して、判別の精度を上げるという作業になると思います。 たとえば、ユーザーエージェント以外にも以下のような機能を捜査することで、判別精度を上げることができると思います。 ・画面解像度 ・タッチ端末かどうか ・GPS機能があるかどうか ・バイブレーションがあるかどうか ・GPSセンサー があるかどうか ・ジャイロセンサーがあるかどうか ・加速度センサーがあるかどうか ・照度センサーがあるかどうか ・近接センサーがあるかどうか もちろん、サーバーサイドでは取得できないので、クライアント側で取得してからサーバーに送る形になると思います。課題となるのは、タブレット端末あるいはタブレットPC両用端末をどう扱うかでしょう。しかしながら、この判別の仕組みは、まともに作ろうとすると、かなり骨が折れます。簡単に作れるものではありません。実装や言語の学習をしたいのならば問題ありませんが、そうでない場合、自分で書くという作業は目的に対してかなり遠回りでしょうね。
補足
すみません、お二人の方に同じ補足します。 いいのです、問題ですから、 perlだと分かったのですが、 if ( ($host =~ /.+panda-world\.ne\.jp$/) このようなロジックになりますが、 phpだとどのようになるでしょうか 宜しくお願い致します。
- AsarKingChang
- ベストアンサー率46% (3467/7474)
自宅からWifiつないだら、モバイル扱いにはならないので、 スマホだと言う判断ができないのでは? なので、JavaScriptなどで、相手側の実ブラウザのエージェントを 送らせて開始するのは、どうでしょうか? といっても、それでも偽装できちゃいますけど 素人よけ程度にはなるかなと。
補足
すみません、お二人の方に同じ補足します。 いいのです、問題ですから、 perlだと分かったのですが、 if ( ($host =~ /.+panda-world\.ne\.jp$/) このようなロジックになりますが、 phpだとどのようになるでしょうか 宜しくお願い致します。
お礼
この情報は有難いです。 ありがとうございました。 参考にさせて頂きます。