- ベストアンサー
セッションの使い方
- セッションを利用して値を保持し、他のページで値を変更する方法について教えてください。
- a.phpでセッションに値を設定し、b.phpで値を変更しましたが、c.phpで確認すると値が変わっていません。どうすれば値を変更できるでしょうか?
- セッションで一度設定した値を他のページで変更する方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> javascriptのonclickで、変数の値を入れ替えるように記述しており、 > (snip) > ・・・ onclick='<?php $_SESSION['n']='1';?>' ・・・・ > という感じの記述です。 あの(^^;それは当たり前です(笑) ただ一点違うのが > ブラウジング時にjavascriptがセットされる時点で ではなく <?php $_SESSION['n']='1';?> で、$_SESSIONに登録されているわけです。 この違いは理解できるでしょうか? PHPはサーバーサイドスクリプトです。 JavaScriptはクライアントサイドスクリプトです。 JavaScriptで記述したから$_SESSIONがセットされたのではなく、Onclick時に呼び出した「PHPの記述」により、$_SESSIONがセットされたのです。 PHPはサーバーサイドスクリプトであるため、$_SESSIONに新たな値を登録したければ、いったんデータをサーバーに送らなくてはなりません。 おそらくラジオボタンか何かで、クライアントが選択した値を$_SESSIONに登録したいのだと思いますが、本来予定していた動きをさせたいのであれば、「クライアントがラジオボタンを選択したという情報」をいったんサーバーに送らなくてはなりません。 ということで、(私が勝手に予想したことですが(^^;)現状のやり方はナンセンスだと思います。
その他の回答 (1)
- kusukusu
- ベストアンサー率38% (141/363)
---b.php--- <?php session_start(); $_SESSION['n']='2'; echo $_SESSION['n']; ?> とすれば、どう表示されますか?
お礼
自己解決しました! cookie.jsを用いて、javascriptでクッキー変数に書き込み、 その値をPHPのクッキーで読み取ることができました。 どうもお騒がせしました&ありがとうございました。
補足
2 と表示されます。 その後、原因がつかめたのですが、javascriptのonclickで、変数の値を入れ替えるように記述しており、ブラウザ表示しただけで一番最後のonclickのところで上書きされてしまっているようです。 どうやら、ブラウジング時にjavascriptがセットされる時点で、マウスクリックしていないのに、変数に代入されているようです。 ・・・ onclick='<?php $_SESSION['n']='1';?>' ・・・・ という感じの記述です。
お礼
自己解決しました! cookie.jsを用いて、javascriptでクッキー変数に書き込み、 その値をPHPのクッキーで読み取ることができました。 どうもお騒がせしました&ありがとうございました。
補足
ありがとうございます。 PHPはサーバーサイドスクリプトです。 JavaScriptはクライアントサイドスクリプトです。 というのは、理解しているのですが、onclickで、<?php $_SESSION['n']='1';?>が実行されるわけではないということですね。 (この件以外でも、どうもPHPとJavaScript間での値の受け渡しで悩むことが多いです) ブラウザ表示のデザインを変えたくないので、JavaScriptのonclickで、PHPのセッションの変数値の入れ替え(クッキー変数でも良い)が出来る方法はないですかね? 何故、PHPのセッションの変数値をわざわざ使うのかというと、他のPHPソース内で、この変数値を見て、初期設定される値の判定をする箇所が存在するからです。 もし、ご存知であれば、ご教授下さいませ。