Обработка сеансов с Recess! - PullRequest
3 голосов
/ 09 февраля 2011

Я использую Recess Framework для своего приложения и столкнулся с проблемой обработки сеансов.Мне нужно сохранить некоторые значения в сеансе .. Я могу создать сеанс и идентификатор сеанса.Но как только я перехожу на другую страницу, я не могу их вернуть !!Как вы, люди, управляете своими сессиями?Обработка сессий 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?Насколько я читал, они должны быть разными!

Ответы [ 2 ]

1 голос
/ 12 февраля 2011

После многих следов и обсуждений с другими членами сообщества на форуме Recess Framework, вот как я это заработал:

Я поместил session_start () в recess-conf.php и пока все работает нормально!

0 голосов
/ 09 февраля 2011

По моему мнению, лучше всего использовать функцию для запуска сеанса следующим образом:

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 ();

/* !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'])){
       .
       .
       .
    }       
}
...