Php Laravel-按用户ID区分会话
我有一个项目,一个登录的用户可以填写一些数据。然后,这些数据将存储在一个名为Main_settings的会话中。我这样做的方式是在我的控制器中执行以下操作: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',
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');
}