3

アプリケーションに Recess Framework を使用していますが、セッション処理に問題があります。セッションにいくつかの値を保存する必要があります。セッションとセッション ID を作成できます。しかし、別のページに移動するとすぐに、それらを元に戻すことができません!! セッションをどのように管理していますか? PHP セッションの処理はシンプルで簡単です..しかし、私はこれを正しく行うことができません!

私のホームコントローラーには次のものがあります。

/* !Route GET, / */
function index() {
   .
   .
   session_start();
   $_SESSION['val'] = 'SomeValue';
   .
   .
}

私のビューには別のフォームが表示され、ユーザーが送信するときに、セッション val にもアクセスする必要があります..そのため、次のように値を取得しようとします。

/* !Route GET, /check */
function check() {
    if(isset($_SESSION['val'])){
       .
       .
       .
    }       
}

しかし残念ながら、私はifブロックを入力しません..セッションを表示しようとした私の間違いがsession_id()とcheck()メソッドの空白値を使用していることを確認できません。

また、新しいセッションを作成するたびに、session_id が同じであることにも気付きました!! それはPHPでそのようなものですか?私が読む限り、それらは異なるはずです!

4

2 に答える 2

1

Recess フレームワークのフォーラムで多くのトレイルと他のコミュニティ メンバーとのディスカッションを行った後、これを機能させる方法を以下に示します。

session_start()recess-conf.phpに入れましたが、今のところすべて正常に動作しているようです!

于 2011-02-12T05:56:49.490 に答える
0

私の意見では、次のようなセッションを開始する関数を使用するのが最善です。

http://snipplr.com/view/41338/start-a-secure-session/

function startSession($session_name) {
    session_name($session_name);
    $ok = @session_start();
    if(!$ok){
       session_regenerate_id(true); // replace the Session ID
       session_start(); // restart the session (since previous start failed)
    }
}

あなたの例では、session_start(); の 2 回目の実行です。必要とされている。

/* !Route GET, /check */
function check() {
    session_start();
    if(isset($_SESSION['val'])){
       .
       .
       .
    }       
}

または私の例では

function startSession($session_name) {
    session_name($session_name);
    $ok = @session_start();
    if(!$ok){
       session_regenerate_id(true); // replace the Session ID
       session_start(); // restart the session (since previous start failed)
    }
}

/* !Route GET, / */
function index() {
   .
   .
   startSession('SID'); // SID is only for example you can use what you want
   .
   .
   $_SESSION['val'] = 'SomeValue';
   .
   .
}


/* !Route GET, /check */
function check() {
       .
       .
       .
    startSession('SID'); // SID is only for example you can use what you want
       .
       .
       .
    if(isset($_SESSION['val'])){
       .
       .
       .
    }       
}
于 2011-02-09T12:46:46.867 に答える