- ベストアンサー
携帯で$_SESSION関数を利用する場合
PHP初心者です。 質問内容や表現に過不足がありましたら、申し訳ございませんが、ご指摘下さい。 PHP4を利用し、携帯で閲覧可能なサイトを作ろうとしています。 a.phpからform上のボタンをクリックするとb.phpを呼ぶというプログラムを作りました。 PCでは動作しているのに、実機(i-modo)で確認するとどうしてもb.phpに移動してくれません。 どうやら$_SESSION関数に入れているデータが携帯の場合には消えてしまっているようなのです。 ソースは次のように組んでいて、途中、echoで表示して確認したところ、PCでは「1」と表示されるのに携帯では「」と何も表示されません。 次行のIF文にひっかかって、a.phpに戻ってしまっているようです。 最近の携帯では$_SESSION関数を利用できる、という話も見かけたのですが、使わずに作った方がよいのでしょうか? 回避策をご存知の方、ご教授頂けると助かります。 //------↓以下ソース例示------ a.php <?php ・・・・・・・・ session_cache_limiter('nocache'); session_start(); $_SESSION['c_flg'] = 1; ・・・・・・・・ <FORM action="b.php?SID" method="POST"> ・・・・・・・・ ?> b.php <?php ・・・・・・・・ session_start(); echo $_SESSION['c_flg'] ; //←ここで携帯の場合何も表示されない if ($_SESSION['c_flg'] != 1 ){ header("Location: http://" . $_SERVER["S"].dirname($_SERVER["R"]) . "/a.php/"); // ↑↑b.phpを直接呼ぶと必ずa.phpが表示されるようにしたい。↑↑ exit; } ・・・・・・・・ ?>
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
<FORM action="b.php?SID" method="POST"> この部分が前後が省略されているのでどうやって表示しているのかわかりませんが <FORM action="b.php?<? echo SID ?>" method="POST"> あるいは echo '<FORM action="b.php?'.SID.'>" method="POST">'; みたいな感じにしたらどうでしょう
その他の回答 (1)
- wakame0729
- ベストアンサー率32% (245/765)
まず、携帯ではcookieが使えないものが多いのでsession.use_only_cookies がONになっているとセッションは使えないと思って下さい。この設定を確認して下さい。これがOFFでsession.use_trans_sidがONになっていれば、cookieが使えない場合自動的にURLにセッションIDが付加されます。 とりあえずお使いのサーバーのこれらの設定、それとcookieが使えない携帯でしたら、URLにセッションIDが付加されるかを確認して下さい。
お礼
ご回答ありがとうございます。 サーバーの環境は私の立場では触ることができないので、このままで何とかしたいと考えています。 お時間を下さり、ありがとうございました。 また何かありましたら、よろしくお願い致します。
補足
carrollさまのアドバイスにより、SIDの使い方が間違っていることに気づいたことと、 「<a href=」から次のソースに飛ぶ場合には &PHPSESSID=". $PHPSESSID を使えばどうやら動くようだということが分かりました。 同じようなことで手が止まってしまった方の為に記載しておきます。
お礼
ご回答頂いて、SIDをそのままHTMLにコーディングしていることが間違いなのだと気づきました。 修正したところ、今回の質問部分はクリアすることができました。 その後今度は、<a href= で呼ぶ場合でコケてしまい、四苦八苦していますが、なんとか自己解決致しました。 助かりました。ありがとう存じます。
補足
ご返答ありがとうございます。すみません。アップミスがありました。 ・・・・・・・・ ?> <FORM action="b.php?SID" method="POST"> ・・・・・・・・ です。 FORM文はHTMLの記述です。