- 締切済み
SESSION の受け渡し
初心者ですので、見当違いの質問の場合はご容赦ください login.php(ユーザ認証) cart.php(ショッピングカート) という構成でSESSION変数の受け渡しを行いたいのですが login.php で認証確認後、 session_start(); $_SESSION['su_id'] = $u_id ; $_SESSION['su_name'] = $u_name ; のように設定の上 require "./cart.php"; でcart.phpを呼び出し(?)ています require直後のcart.phpの初期状態では $_SESSION['su_id'] 、$_SESSION['su_name']ともに正しく表示しますが submit等(次ページ表示などで)で再表示を行うと $_SESSION['su_id'] 、$_SESSION['su_name']が引き継がれません cart.phpにおける session_start()時に、新しいIDに置き換わっているからだと思いますが このようなケースではどういう処置を行えばよいのでしょうか? 幼稚な質問かどうかすら判断できていないのですが コメントを頂ければ助かります よろしくお願いします
- みんなの回答 (2)
- 専門家の回答
みんなの回答
require "./cart.php"; これはどこに書かれているのですか? 例えば、main.php(認証後のページ)の中でrequire "./cart.php";しているならわかります。 (説明では、cart.phpの中で、cart.phpをrequireする様に捉えられます) 以下を参考に、画面遷移を見直してください。 // login.php *session_start() *フォームにIDやパスワードを入力 *認証処理 *【成功】セッション情報を登録、新しいsession_idを発行、main.phpへリダイレクト *【失敗】送信情報をクリアする為に、login.phpへリダイレクト // main.php *session_start() *セッション情報チェック、不正:logout.phpへリダイレクト *require "./cart.php"; *$ca = new Cart( セッション情報 ); //カートクラスのインスタンス生成 *$ca->show(), $ca->add(), $c->del(), $ca->edit() etc. *商品表示とか色々なコンテンツ表示 // cart.php * class Cart カート自体を作成したり、アイテムを追加削除編集したりするクラス * function __construct( セッション情報 ) * function show(), add(), del(), edit() etc. // logout.php *session_start() *セッション破棄 *login.phpへリダイレクト
- taka451213
- ベストアンサー率47% (436/922)
こんばんは。 質問文からだと、session_idが変わってしまう原因は分かりませんね・・・。 どうしてもsession_idが引き継げないような場合は、 自分でsession_idを設定して、毎回同じsession_idでsession_startすればいいです。 cookieが使える場合は、普通に引き継いでくると思うんですが・・・。
お礼
回答いただき、ありがとうございます 現処理のすべてのsession_startの直前で session_id( "abcdefghijklmn" ); を記述すれば良いのでしょうか?
お礼
回答いただき、ありがとうございます > require "./cart.php"; > これはどこに書かれているのですか? > 例えば、main.php(認証後のページ)の中でrequire "./cart.php";しているならわかります。 > (説明では、cart.phpの中で、cart.phpをrequireする様に捉えられます) 説明が曖昧でした login.phpの中で、認証確認直後に記述しています ご指摘のサンプルを参考にさせて頂いていますが、現cart.phpの機能をmainと分散化する事になるのですよね・・