投稿者 |
メッセージ |
|
< PHPプログラミング ~ セッション変数の値を変えることができない |
|
時間:
水 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をしない限り、セッション変数の値を変えることはできませんでした。
こういうものなのでしょうか? |
|
|
|
|
|
|
|
時間:
水 5月 02, 2007 10:11 am
|
|
|
|
どーも。
>その直後に別なphp、[output.php]で、
というのはsubmitなどで遷移するわけではなく、別にページを開くということでしょうか?
formやredirectによるページ遷移ではなく、新規にページを開くようだと新たにセッションが貼られてしまい、部分的に別物扱いになっているのではないでしょうか?
またセッション情報の格納先ですが
ini_set('session.use_only_cookies',1);
session_start();
とするとクッキーからのみセッション情報を取得するように出来ますが、さてさて、というところです。 |
|
|
|
|
|
|
|
時間:
土 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)を一切やめた。
これで解決しました。ありがとうございました。 |
|
|
|
|
|
|
|