如何在 laravel 中进行会话?
Posted
技术标签:
【中文标题】如何在 laravel 中进行会话?【英文标题】:how to make a session in laravel? 【发布时间】:2018-01-29 02:51:20 【问题描述】:我想根据 $id(唯一 id)创建会话。这是为了当每个用户进入 Web 应用程序时,他们将拥有自己的会话 ID 和自己的数组。但是现在当我把它放在函数中并且每次我进入函数时,会话都不会被存储,它会覆盖上一个会话。那么如何修改代码,以便在函数 test() 中为每个用户创建所有会话。
这是我的代码:
public function test()
$id = 'new3'; //later on will be auto generate id
$array[$id] = ['one' => 'abc', 'two' => 'def'];
if (!session($id))
session($array);
dd(session()->all());
【问题讨论】:
阅读文档.. laravel.com/docs/5.4/session#storing-dataSession::set('variableName', $value);
试试
请点击此链接 (***.com/questions/28417796/…)
【参考方案1】:
Session::put('variable', $yourvalue);
然后获取会话:
Session::get('variable');
【讨论】:
【参考方案2】:你应该像这样操作 laravel 会话:
public function test(Request $request)
$id = 'new3'; //later on will be auto generate id
$array[$id] = ['one' => 'abc', 'two' => 'def'];
// Determining if an item exists in the session.
if (!$request->session()->has($id))
// Storing data in the session.
$request->session()->put($id, $array[$id]);
dd($request->session()->all());
【讨论】:
但我刚刚尝试了会话。我首先给它下面的 id new 是数组 "new" => array:2 [▼ "one" => "abc1" "two" => "def" ] 但是当我将 id 更改为 new1 时,上面的数组和session 不再可用,它将被替换为下面的 "aaaa" => array:2 [▼ "one" => "abc1" "two" => "def" ] id 将从 new 变为 aaaa跨度> 是的,我使用了您的代码并运行它仍然相同。会话没有被存储,每次页面加载到相同的函数 text() 时它都会创建新会话【参考方案3】:正确的语法是...
Session::set('variableName', $value);
要获取变量,您可以使用...
Session::get('variableName');
如果您需要设置一次,我会弄清楚您想要设置它的确切时间并使用事件来完成。例如,如果您想在有人登录时设置它,您可以使用...
Event::listen('auth.login', function()
Session::set('variableName', $value);
);
【讨论】:
【参考方案4】:我认为你需要试试这个:
public function test(Request $request)
$id = 'new3'; //later on will be auto generate id
$array[$id] = ['one' => 'abc', 'two' => 'def'];
// Determining if an item exists in the session.
if (!$request->session()->has($id))
// Storing data in the session.
$request->session()->put($id, $array[$id]);
dd($request->session()->all());
if($request->session()->has($id))
$request->session()->forget($id);
【讨论】:
不,还是一样。每次我刷新函数时,新的 id 都会替换为旧的 @RollCasualLee id 的 session 名称是什么 @RollCasualLee 你设置的 首先我设置 $id = 'new3';它创建了一个 new3 的新会话数组,而不是我更改为 $id = 'new4';之后 new3 不再存在,new4 被创建。【参考方案5】:即使我在操作存储在 session laravel 中的数组时也没有遇到什么问题。经过反复试验,我能够使事情正常进行,如下所示:
$data['quantity'] = $request['quantity'];
$data['price'] = $price;
$data['tax'] = $tax;
$data['shipping'] = 0;
if($request->session()->has('cart'))
$cart = $request->session()->get('cart', collect([]));
$is_id_duplicate = false;
foreach($cart as $key=> $c)
if ($c['id']== $request->id)
$is_id_duplicate=true;
break;
if ($is_id_duplicate)
$cart = $cart->map(function ($object, $key) use ($request)
if($object['id'] == $request->id)
$object['quantity'] = $request->quantity;
return $object;
);
$request->session()->put('cart', $cart);
else
$cart->push($data);
echo "<br><pre>";
print_r($cart);
echo "</pre>";
else
$cart = collect([$data]);
$request->session()->put('cart', $cart);
【讨论】:
以上是关于如何在 laravel 中进行会话?的主要内容,如果未能解决你的问题,请参考以下文章
在 php 中登录服务器端时在 android 中进行会话处理