【问题标题】:Laravel never forget an item from sessionLaravel 永远不会忘记会话中的项目
【发布时间】:2015-08-20 22:14:22
【问题描述】:

我将一个数组推送到 Laravel 会话中:

  "accountConfirm" => array:1 [
    0 => array:2 [
      "table" => "teacher"
      "id" => 37
    ]
  ]

当我打电话给Session::flush()Session::forget('accountConfirm') 并在下面的行中进行测试

if ( Session::has('accountConfirm') ) 
{
  // false
}

但是之后,当我进行相同的测试时,没有删除功能(刷新、忘记):

if ( Session::has('accountConfirm') ) 
{
  // true
}

为了确保,我不会再推这个项目了。

为什么会出现这种情况?

【问题讨论】:

  • 我有点困惑,如果您不删除会话,为什么您期望它应该被删除?每个 test 是否在会话中添加 accountConfirm,或者您是否执行过一次并希望在删除项目后消失?
  • @SpencerWieczorek 现在我也很困惑。如果调用 Session::forget('accountConfirm') 我希望该项目应该从 Session 数组中删除并且不再可访问。这是错误的吗?
  • @SpencerWieczorek 因为它是我不希望在会话中继续的数据
  • 如果您使用Session::forget('accountConfirm') accountConfirm 将不再存在于会话中。有什么问题?
  • @mdamia 是的,问题出在Session::forget('accountConfirm') accountConfirm 后坚持会话

标签: php session laravel laravel-5


【解决方案1】:

在你的路由中复制并粘贴它并导航到每个 url 以查看结果。

Route::get('/session/set',function(){
  Session::put('name','John');
  if (Session::has('name')){
    echo Session::get('name');
  }
});

Route::get('/session/forget/',function(){
  Session::forget('name');
  if (Session::has('name')){
    echo Session::get('name');
  }else{
    echo 'Name is not set';
  }
});

【讨论】:

    猜你喜欢
    • 2013-08-12
    • 2018-02-22
    • 2012-04-01
    • 2011-01-23
    • 2021-07-04
    • 1970-01-01
    • 2021-07-09
    • 1970-01-01
    相关资源
    最近更新 更多