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

初心者ですので、見当違いの質問の場合はご容赦ください

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に置き換わっているからだと思いますが
このようなケースではどういう処置を行えばよいのでしょうか?

幼稚な質問かどうかすら判断できていないのですが
コメントを頂ければ助かります

よろしくお願いします

A 回答 (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へリダイレクト

参考URL:http://www.php.net/manual/ja/ref.session.php
    • good
    • 0
この回答へのお礼

回答いただき、ありがとうございます

> require "./cart.php";
> これはどこに書かれているのですか?
> 例えば、main.php(認証後のページ)の中でrequire "./cart.php";しているならわかります。
> (説明では、cart.phpの中で、cart.phpをrequireする様に捉えられます)

説明が曖昧でした
login.phpの中で、認証確認直後に記述しています

ご指摘のサンプルを参考にさせて頂いていますが、現cart.phpの機能をmainと分散化する事になるのですよね・・

お礼日時:2011/03/13 06:28

こんばんは。



質問文からだと、session_idが変わってしまう原因は分かりませんね・・・。
どうしてもsession_idが引き継げないような場合は、
自分でsession_idを設定して、毎回同じsession_idでsession_startすればいいです。
cookieが使える場合は、普通に引き継いでくると思うんですが・・・。
    • good
    • 0
この回答へのお礼

回答いただき、ありがとうございます

現処理のすべてのsession_startの直前で
session_id( "abcdefghijklmn" );
を記述すれば良いのでしょうか?

お礼日時:2011/03/13 06:31

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