新しく質問する

vodafoneの古い携帯(P3P4など)でheader('Location: ')が使えない

役に立った:0件
  • 質問者:majikaru
  • 投稿日時:2005/05/26 16:38
  • 困り度:すぐに回答が欲しいです

携帯端末用のWebサイトをPHP4にて構築しています。

リダイレクトをさせようとheader( 'Location: http://www.test/test?id=100');
などと使用すると、引数がリダイレクト先で受け取れなくて困っています。

サーブレットの
getRequestDispatcher
のように、リクエストを丸投げできるフォワードのような処理ができる
方法はないでしょうか?

(最近の3G端末などなら、引数のパラメータが取得できるのですが。。。)

どなたかご存知の方、よろしくご教授ください。

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:0件)
  • 参考になった:0件

No.5ベストアンサー20pt

  • 回答者:wakame0729
  • 回答日時:2005/06/01 16:32

UIDって、端末側で公開設定されていればUA文字列に挿入される端末IDの事ですよね?それ自体で相手を特定できるようなものではないですし、そもそも本人にのみ表示されるものですから問題ないような気もしますけど・・・詳しくはvodafoneの技術系の窓口に確認してみたらいかがでしょうか?

心配でしたら暗号化をするか、セッション等を使っていればセッション変数を利用してはどうでしょうか。暗号化といっても簡単なものでいいと思いますけど。
一文字づつord関数等を利用して桁数を揃えた数値化をして並べるだけでもいいと思いますよ。

通報する

  • 参考になった:0件
  • 回答者:wakame0729
  • 回答日時:2005/05/27 17:57

補足します。

UIDはvodafoneの端末からのリクエストでゲートウェイにて付加される情報です。ですがリダイレクトは端末からのリクエストではないという事で、ゲートウェイでは要求を無視するそうです。

通報する

  • 参考になった:0件
  • 回答者:wakame0729
  • 回答日時:2005/05/27 17:50

ああ、ならわかりました。

リダイレクトの場合はvoadfoneのゲートウェイを通過しないので(恐らくUIDも含むであろう)位置情報など端末からのクエリ文字列等は取得できません、というような事がHTTPのマニュアルのlocationの項に書いてあります。

リダイレクト元でUIDを取得し、GET等のパラメータとしてリダイレクト先に送るような処理が必要だと思います。

通報する

この回答へのお礼

ご返答が遅くなりまして申し訳ございません。

なるほど。そういう仕様があったんですね。
私が知りたい情報は、まさにそれでした。
お手数をかけさせた上に、正確な解答をしていただき
恐縮の極みです。

とすると

A.php

$uid_A = $header['x-jphone-uid'];
header( 'Location: http://www.test/B.php?uid_B=uid_A' ) ;

B.php

$uid= $_GET['uid_B'];

というような処理になるのでしょうか?
このように、UIDをGETに渡すと
URLにUIDのパラメータが表示されてしまい
問題ないのでしょうか?(POSTでなくて平気?)

またもや重ねての質問になりますが、
どうぞよろしくお願い致します。

  • 参考になった:0件
  • 回答者:wakame0729
  • 回答日時:2005/05/26 23:45

うちではC3/C4でもこういう現象は起きていません。C2はさすがに今はサポートしていないので何とも言えませんが・・・。

ですので端末がこういう仕様になっているわけではないと思いますよ。リダイレクトでパラメータが渡せないなんてえらいこっちゃ、ですよ。

ですので原因はどこかにある、と考えた方がいいですね。ちなみにC/P/Wでブラウザ等の挙動は違いますから、P/WでOKだけどCはダメという事は大いにあり得ます。

まず疑うべきはLocationに与えているURLのパラメータ部分がHTTPというプロトコル的に正しいものになっているのかどうかですね。差し支えなければURL部分をheader関数の手前でprintさせて(その直後にexit()しないと表示されませんので注意)、URL部分は変えて構わないのでドメイン部以下(ディレクトリ部分含む)で載せて欲しいなと思います。お役に立てないかも知れませんが念のため。

通報する

この回答へのお礼

ご返答ありがとうございます。

またしても自分の勘違いでした。
リダイレクトにより、取得できないのは
「キャリアからのUID」でした。

リダイレクトの処理をさせているLocation部分に
必要なパラメータを渡してやると、
通常であれば、キャリアのゲートウェイを通過する時に
UIDに変更してくれるはずなのですが
こちらの受け取り元では、UIDが送られてきません(何の文字も取得できません)

こちらの言う事が二転三転して申し訳ないですが
今度こそその通りの現象です。

通常のパラメータはLocationで取得できていました。

  • 参考になった:0件
  • 回答者:wakame0729
  • 回答日時:2005/05/26 17:17

P型ってパケット対応機ですよね。うちではそのような現象は起きていないので、何か別な原因ではないでしょうか。

例えばセッションとか使ってますか?セッション絡みでVodafone一部端末で問題が起きた事があります。header関数に与える文字列は例と同じですか?どんな簡単な文字列でも受け渡しできませんか?また、リダイレクト先にはちゃんと飛んでいるのでしょうか。

vodafoneって「え?こんなトコの動作が違うの!?」って感じで種類毎に挙動が変わる事がありました。なので僕もこの質問には興味持ってます。

通報する

この回答へのお礼

ご返答ありがとうございます。

こちら、自分の勘違いで、現象が起きてしまうのは

C2/C3/C4

でした。

ちなみに、リダイレクト先にはちゃんと飛んでいます。
そこでパラメータを受け取ると
値が入っていないのです。

またご返答頂ければ幸いです。

  
このQ&Aは役に立ちましたか?(役に立った:0件)

このページのトップへ