2014-10-02 5 views
1

У меня есть Laravel контроллер, как это:переменная Session на обновления

public function postSessionTopic() { 

    $article_id = Input::get('article_id', 0); 
    $comment_id = Input::get('comment_id', 0); 

    \Session::set('page_topic_id', $article_id); 
    \Session::set('page_comment_id', $comment_id); 

    \\comment - I have tried \Session::put too, but that doesn't change anything 


} 

Я использую его, когда пользователь нажимает на изделии. Я печатаю свою переменную сеанса в этом контроллере, и все выглядит нормально. Но после этого я обновляю свою страницу, и там я читаю значение из сеанса, а иногда он загружает старое значение или ничего не загружает. Я не могу понять, почему, потому что в контроллере я вижу, что правильное значение сохраняется!

В моей странице, я получаю это значение, как это:

\Session::get('page_topic_id', 0) 
+0

проверка для сеанса домена печенья, как если ваш печенье сохраняется в www.example.org и доступ example.loc вы не будете получить доступ к той же сессии в обоих – MaK

+0

домена всегда то же – user3921996

ответ

0

Вероятно, вы делаете что-то неправильно. Вы должны убедиться, что в обоих случаях вы используете точно такой же домен (с или без www).

В этом контроллере, когда у вас нет ввода, вы задаете переменные сеанса 0. Это также может быть проблемой, если вы запустите этот метод, когда у вас нет ввода.

Вы можете попробовать с добавлением этого основного маршрута:

Route::get('/session', function() { 

    $page_topic = Session::get('page_topic_id', 1); 

    $page_comment = Session::get('page_comment_id', 1); 

    echo $page_topic.' '.$page_comment.'<br />'; 

    $article_id = $page_topic * 2; 
    $comment_id = $page_comment * 3; 

    Session::set('page_topic_id', $article_id); 
    Session::set('page_comment_id', $comment_id); 
}); 

Как вы видите, это прекрасно работает (но вы должны удалить кук сессии, прежде чем пытаться с этим путем).

Вы

1 1 
2 3 
4 9 
8 27 

и так далее. Все, как ожидалось

+0

Это тоже не работает – user3921996

+0

Как вы его протестировали? Вам необходимо обновить этот URL вручную, например, 'http: // localhost/project/session', и вы получите значения. Какие ценности вы получаете? –

0

Ответ был - два ajax за один раз. Не делайте этого, если вы храните что-то в сеансе.

0

Сеанс в Laravel не рассматривает изменения постоянные, если вы не генерируете ответ (и это результат использования симфонии в качестве базы). Поэтому убедитесь, что ваш app-> run() заканчивается правильно и возвращает ответ перед обновлением. Ваша проблема в основном вызвана методом die() где-то рядом с вашим кодом или неожиданным выходом экземпляра PHP/работника.

0

Возможно, это не ваша проблема, но если вы храните свой сеанс laravel в базе данных, это ограничение на то, насколько велика эта ценность. У миграции сеанса Laravel есть поле под названием «полезная нагрузка», которое является типом текста. Если вы превысите лимит на этом поле, вся сессия будет отключена. Это происходило со мной, когда я динамически добавлял данные модели json в свою сессию.

Schema::create('sessions', function (Blueprint $table) { 
     $table->string('id')->unique(); 
     $table->text('payload'); 
     $table->integer('last_activity'); 
    }); 

How much UTF-8 text fits in a MySQL "Text" field?

Смежные вопросы