投稿者 メッセージ
<  PHPプログラミング  ~  セッション変数の値を変えることができない
鈴木健
投稿1時間: 水 12月 06, 2006 11:50 pm  引用



登録日: 2006年12月 06日
投稿記事: 2

はじめまして、php初心者です。
本を3冊読み、ネットで検索しても解決できなかったので質問させてください。

セッション変数は一度入れたら変えることのできないものでしょうか?たとえば、ユーザーがフォームに住所を入力し、それを確認画面でチェックした後に変数の値を変更し、再度、確認画面を見た時に発生した問題です。

たとえば、[entry.php]で、
 //セッションを開始します
 session_start();
 $_SESSION['ads'] = "tokyo";

という処理を行い、[confirm.php]で、
 session_start();
 $ads=$_SESSION['ads'];
 print $ads;
を行うと、$adsに"tokyo"と入っていることが確認できました。ところが、この[confirm.php]の次の処理で、
 $_SESSION['ads'] = "osaka";
を実行して(ユーザーによる修正処理)、その直後に別なphp、[output.php]で、
 session_start();
 $ads=$_SESSION['ads'];
を実行すると$adsには"tokyo"が入ったままなのです。
unset($_SESSION["['ads'"]);を[confirm.php]実行した後に$ads=$_SESSION['ads'];を行っても結果は同じでした。session destroyをしない限り、セッション変数の値を変えることはできませんでした。

こういうものなのでしょうか?
トップに移動
ユーザー情報を表示 メッセージを送信
ゆせ
投稿1時間: 水 5月 02, 2007 10:11 am  引用



登録日: 2007年5月 02日
投稿記事: 8

どーも。

>その直後に別なphp、[output.php]で、
というのはsubmitなどで遷移するわけではなく、別にページを開くということでしょうか?
formやredirectによるページ遷移ではなく、新規にページを開くようだと新たにセッションが貼られてしまい、部分的に別物扱いになっているのではないでしょうか?

またセッション情報の格納先ですが
ini_set('session.use_only_cookies',1);
session_start();
とするとクッキーからのみセッション情報を取得するように出来ますが、さてさて、というところです。
トップに移動
ユーザー情報を表示 メッセージを送信 ウェブサイトに移動
鈴木健
投稿1時間: 土 6月 23, 2007 4:30 am  引用



登録日: 2006年12月 06日
投稿記事: 2

>ゆせさん
>submitなどで遷移するわけではなく、別にページを開くということでしょうか?
submitで遷移しています。
しかし「部分的に別物扱い」がヒントになり、ページからページへの受け渡しができていなかったことに気づき、問題を解決することができました。
1. phpを4.4.6から5.2.1にした。(念のため)
2. register_globals = OnだったのをOff
3. session_resgister($XXX)を一切やめた。

これで解決しました。ありがとうございました。
トップに移動
ユーザー情報を表示 メッセージを送信
特定期間内の記事を表示:   
All times are GMT +9:00

次のトピックを表示
前のトピックを表示
Page 1 of 1
フォーラム一覧  ~  PHPプログラミング

トピックの新規投稿   返信


 
移動先:  

新規投稿: 不可
返信: 不可t
自分の記事の編集: 不可
自分の記事の削除: 不可
投票への参加: 不可




Powered by phpBB
customized by phpspot.