- ベストアンサー
予約システム構築中の問題について
- 予約システムの構築中、携帯の識別番号を取得する際に問題が発生しています。
- 現在の環境は、サーバPCでXPを使用し、xampp 1.7.1(PHP5.2.5 Apache2.0 MYSQL5.0)を利用しています。
- 携帯の識別番号を取得するために、Net_UserAgent_Mobileという関数を使用していますが、DOCOMOの場合は取得できず、ソフトバンクでは取得できるようです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> 但し、質問に書きましたように、 > Net_UserAgent_Mobile::singleton() > を使った、携帯三社の切り分けやら、 > $agent->getUserAgent(); > での値取得はできております。 Net_UserAgent_Mobile-1.0.0 のソースをざっと見てみました。 ここらへんとか。 function isDoCoMo($userAgent = null) { if (is_null($userAgent)) { $userAgent = @$_SERVER['HTTP_USER_AGENT']; } if (preg_match('!^DoCoMo!', $userAgent)) { return true; } return false; } $_SERVER['HTTP_USER_AGENT'] を 使って、携帯判別しているように見えました。 なので、 > 試しに、 > $agent = $_SERVER['HTTP_USER_AGENT']; > print("agent=$agent<br>"); > を実行してみましたところ、値が入りませんでした。(ドコモ、ソフトバンク共通) が、なんとも不思議なとこであります。 Net_UserAgent_Mobile で 取得できているものが、$_SERVER['HTTP_USER_AGENT'] だと 取得できていないというのが 問題解決のカギなんだろうとは思いますが、 そちらのソース全文を見るわけにもいきませんので、お力になれず申し訳ありません。
その他の回答 (2)
- hrm_mmm
- ベストアンサー率63% (292/459)
各携帯からアクセスした時に、 var_dump($_SERVER); を表示してみるとよいかもしれません。 たぶんキー名が違うと思われます。 Net_UserAgent_Mobile で取得できてるなら、そのクラスのソースを見たほうがよさそうな気もするけど。pearかなにかでしょうか?
お礼
>pearかなにかでしょうか? PHPです。 PEAR の中の携帯に関するもので、Ver1.0.0です。 ご回答ありがとうございます。 表示させてみました。FFからだと表示されないことがわかりました。(当然ですね、勘違いしていました) 実機の場合、ソフトバンクの場合、SSLで無い場合は、正常にダンプできました。質問の折にSSLでもだめだったのはFFでやった場合で実機ではなかったのかもしれません。勘違いしていたようです。 一応、ソフトバンクにては、解決しました。 ドコモ携帯は実機を持っていないので、後ほど確認してみます。ありがとうございました。
- bm_hiro
- ベストアンサー率51% (200/388)
docomo だと 送信する側のHTMLにも書かなければいけない事がありますが、 それは していますでしょうか? http://www.nttdocomo.co.jp/service/imode/make/content/ip/index.html#imodeid <a href="http://sample.com/test.php?guid=ON">test</a> や <form action="./sample?guid=ON" method="post" name="form1"> <input type="submit" value="送信"> </form> こんな感じで。 このサイトからの丸パクリ。 http://memorva.jp/memo/mobile/uid_utn.php
補足
早速の書き込みありがとうございます。参照URLは当方も参考にさせていただきました。 guid=ON (sslでの取得はできないそうですので、通常のも試みました) また、utnの件に関しても試してみました。結果はだめでした。 試しに、 $agent = $_SERVER['HTTP_USER_AGENT']; print("agent=$agent<br>"); を実行してみましたところ、値が入りませんでした。(ドコモ、ソフトバンク共通) 但し、質問に書きましたように、 Net_UserAgent_Mobile::singleton() を使った、携帯三社の切り分けやら、 $agent->getUserAgent(); での値取得はできております。
お礼
#2さんのアドバイスにてダンプさせましたところ、ソフトバンクの実機にて正常取得できました。 頭がこんがらがっておりまして、申し訳ありません。実機とFFを使って試験しておりましたので、SSLで繋いでいたようです。FFは、当然にもHTTP_X_JPHONE_UIDの取得はできませんね、早とちりというか、頭の整理できていませんでした。 ソフトバンク実機でSSL解除して通信しましたところ、HTTP_X_JPHONE_UIDを取得できました。 ドコモ携帯を持っていないのでドコモはまだ未確認ですが、近日試してみようと思います。 お陰様にて、前に進みそうです。ほんとうにありがとうございました。
補足
申し訳ありません、間違ってコピーしておりました。 >> $agent = $_SERVER['HTTP_USER_AGENT']; >> print("agent=$agent<br>"); >> を実行してみましたところ、値が入りませんでした。(ドコモ、ソフトバンク共通) は $agent = $_SERVER['HTTP_X_JPHONE_UID']; と $agent = $_SERVER['HTTP_X_DCMGUID']; です。 ですので、 $_SERVER['HTTP_USER_AGENT']; は取得できております。