• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文: 予約システムを構築しております。レベルは日曜プログラマーから漸く脱し)

予約システム構築中の問題について

このQ&Aのポイント
  • 予約システムの構築中、携帯の識別番号を取得する際に問題が発生しています。
  • 現在の環境は、サーバPCでXPを使用し、xampp 1.7.1(PHP5.2.5 Apache2.0 MYSQL5.0)を利用しています。
  • 携帯の識別番号を取得するために、Net_UserAgent_Mobileという関数を使用していますが、DOCOMOの場合は取得できず、ソフトバンクでは取得できるようです。

質問者が選んだベストアンサー

  • ベストアンサー
  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.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'] だと 取得できていないというのが 問題解決のカギなんだろうとは思いますが、 そちらのソース全文を見るわけにもいきませんので、お力になれず申し訳ありません。

rakujin
質問者

お礼

 #2さんのアドバイスにてダンプさせましたところ、ソフトバンクの実機にて正常取得できました。  頭がこんがらがっておりまして、申し訳ありません。実機とFFを使って試験しておりましたので、SSLで繋いでいたようです。FFは、当然にもHTTP_X_JPHONE_UIDの取得はできませんね、早とちりというか、頭の整理できていませんでした。  ソフトバンク実機でSSL解除して通信しましたところ、HTTP_X_JPHONE_UIDを取得できました。  ドコモ携帯を持っていないのでドコモはまだ未確認ですが、近日試してみようと思います。  お陰様にて、前に進みそうです。ほんとうにありがとうございました。

rakujin
質問者

補足

 申し訳ありません、間違ってコピーしておりました。 >> $agent = $_SERVER['HTTP_USER_AGENT']; >> print("agent=$agent<br>"); >> を実行してみましたところ、値が入りませんでした。(ドコモ、ソフトバンク共通) は $agent = $_SERVER['HTTP_X_JPHONE_UID'];   と $agent = $_SERVER['HTTP_X_DCMGUID']; です。 ですので、 $_SERVER['HTTP_USER_AGENT']; は取得できております。

その他の回答 (2)

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.2

各携帯からアクセスした時に、 var_dump($_SERVER); を表示してみるとよいかもしれません。 たぶんキー名が違うと思われます。 Net_UserAgent_Mobile で取得できてるなら、そのクラスのソースを見たほうがよさそうな気もするけど。pearかなにかでしょうか?

rakujin
質問者

お礼

>pearかなにかでしょうか? PHPです。 PEAR の中の携帯に関するもので、Ver1.0.0です。 ご回答ありがとうございます。 表示させてみました。FFからだと表示されないことがわかりました。(当然ですね、勘違いしていました) 実機の場合、ソフトバンクの場合、SSLで無い場合は、正常にダンプできました。質問の折にSSLでもだめだったのはFFでやった場合で実機ではなかったのかもしれません。勘違いしていたようです。 一応、ソフトバンクにては、解決しました。 ドコモ携帯は実機を持っていないので、後ほど確認してみます。ありがとうございました。

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.1

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

rakujin
質問者

補足

 早速の書き込みありがとうございます。参照URLは当方も参考にさせていただきました。 guid=ON (sslでの取得はできないそうですので、通常のも試みました) また、utnの件に関しても試してみました。結果はだめでした。 試しに、 $agent = $_SERVER['HTTP_USER_AGENT']; print("agent=$agent<br>"); を実行してみましたところ、値が入りませんでした。(ドコモ、ソフトバンク共通) 但し、質問に書きましたように、 Net_UserAgent_Mobile::singleton() を使った、携帯三社の切り分けやら、 $agent->getUserAgent(); での値取得はできております。

関連するQ&A