Php Laravel-按用户ID区分会话

Php Laravel-按用户ID区分会话,php,laravel,session,laravel-5,Php,Laravel,Session,Laravel 5,我有一个项目,一个登录的用户可以填写一些数据。然后,这些数据将存储在一个名为Main_settings的会话中。我这样做的方式是在我的控制器中执行以下操作: private $predefinedArray = ['user_id', 'city', 'postal_code', 'street_name', 'house_number', 'store_name', 'store_tel',

我有一个项目,一个登录的用户可以填写一些数据。然后,这些数据将存储在一个名为Main_settings的会话中。我这样做的方式是在我的控制器中执行以下操作:

private $predefinedArray = ['user_id', 'city', 'postal_code', 'street_name',
                            'house_number', 'store_name', 'store_tel',
                            'store_hoo', 'vat_number'];

public function store(Request $request)
{
    foreach($this->predefinedArray as $value) {
        $request->session()->put('main_settings.' . $value, $request->input($value));
    }

   return redirect('themes');
}
我通过在视图中执行以下操作来调用会话变量:

{{session'main_settings.store_name'}

如果用户返回,他的信息仍然存在,这不是问题所在。问题是,如果John Doe登录并开始填写表单,然后注销。Jane Doe登录后,将显示John Doe填写的信息,而Jane Doe甚至还没有填写任何内容

不知何故,我需要通过用户ID来区分会话,以便在视图中调用登录用户的会话。我怎样才能做到这一点

用户id将与表单一起发送

提前谢谢

问题是,如果John Doe登录并开始填写 该表单将被删除,然后注销。Jane Doe登录了,这些信息 将显示填写的John Doe,而Jane Doe甚至没有填写 有什么事吗

这是因为当John Doe注销时,您不会忘记这些值。如果您想在John Doe注销时删除插入的值,请查看以下内容

Controller.php

这将有助于您实现目标

如果出于任何原因,希望在会话中保留值,可以执行以下操作:

public function store(Request $request)
{
    foreach($this->predefinedArray as $value) {
        session()->put(auth()->id().'.main_settings.' . $value, $request->$value);
    }

   return redirect('themes');
}
通过添加auth->id,您已经在会话中保留了用户的id和他在填写表单时插入的设置。这反过来将帮助登录的用户,因为他们不必再次填写所有详细信息


希望这对你有所帮助。快乐编码。干杯。

您是否考虑过在用户注销时清除主设置?对不起。我不明白。该会话是唯一的。怎么可能呢?你能提供更多的信息吗?”因为你好像错过了something@haakym我不太确定,在拉雷维尔,我认为这是自动发生的,如果不是,我怎么能做到呢?我知道需要的代码是$request->session->flush;但只有在请求的情况下才能这样做?@AlexSlipknot这是我关于这个问题的全部信息。我能给你的唯一额外的东西是HTML表单,我认为这里不需要它。啊,好的,我知道了:你已经被设置为请求->会话而不是会话。所以有一个问题。
public function store(Request $request)
{
    foreach($this->predefinedArray as $value) {
        session()->put(auth()->id().'.main_settings.' . $value, $request->$value);
    }

   return redirect('themes');
}