dポイントプレゼントキャンペーン実施中!

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;
}
・・・・・・・・
?>

A 回答 (2件)

<FORM action="b.php?SID" method="POST">


この部分が前後が省略されているのでどうやって表示しているのかわかりませんが
<FORM action="b.php?<? echo SID ?>" method="POST">
あるいは
echo '<FORM action="b.php?'.SID.'>" method="POST">';
みたいな感じにしたらどうでしょう

この回答への補足

ご返答ありがとうございます。すみません。アップミスがありました。
・・・・・・・・
?>
<FORM action="b.php?SID" method="POST">
・・・・・・・・
です。
FORM文はHTMLの記述です。

補足日時:2005/07/06 10:23
    • good
    • 0
この回答へのお礼

ご回答頂いて、SIDをそのままHTMLにコーディングしていることが間違いなのだと気づきました。
修正したところ、今回の質問部分はクリアすることができました。
その後今度は、<a href= で呼ぶ場合でコケてしまい、四苦八苦していますが、なんとか自己解決致しました。
助かりました。ありがとう存じます。

お礼日時:2005/07/06 13:12

まず、携帯ではcookieが使えないものが多いのでsession.use_only_cookies がONになっているとセッションは使えないと思って下さい。

この設定を確認して下さい。これがOFFでsession.use_trans_sidがONになっていれば、cookieが使えない場合自動的にURLにセッションIDが付加されます。

とりあえずお使いのサーバーのこれらの設定、それとcookieが使えない携帯でしたら、URLにセッションIDが付加されるかを確認して下さい。

この回答への補足

carrollさまのアドバイスにより、SIDの使い方が間違っていることに気づいたことと、
「<a href=」から次のソースに飛ぶ場合には
&PHPSESSID=". $PHPSESSID
を使えばどうやら動くようだということが分かりました。

同じようなことで手が止まってしまった方の為に記載しておきます。

補足日時:2005/07/06 13:23
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
サーバーの環境は私の立場では触ることができないので、このままで何とかしたいと考えています。

お時間を下さり、ありがとうございました。
また何かありましたら、よろしくお願い致します。

お礼日時:2005/07/06 13:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!