Php Cookie::忘记不工作laravel 5.1
我试图让Laravel5.1删除我的cookie,但是它不会删除,即使我用重定向返回它Php Cookie::忘记不工作laravel 5.1,php,laravel,laravel-5.1,Php,Laravel,Laravel 5.1,我试图让Laravel5.1删除我的cookie,但是它不会删除,即使我用重定向返回它 return redirect('/voucher')->withCookie(Cookie::forget($cookie)); 我做错了什么吗?也许我错了,但在调用cookie::forget($cookie)时,您可能使用cookie对象代替cookie名称。除非$cookie是包含cookie名称的字符串,否则应尝试以下操作: return redirect('/voucher')->w
return redirect('/voucher')->withCookie(Cookie::forget($cookie));
我做错了什么吗?也许我错了,但在调用
cookie::forget($cookie)
时,您可能使用cookie对象代替cookie名称。除非$cookie
是包含cookie名称的字符串,否则应尝试以下操作:
return redirect('/voucher')->withCookie(Cookie::forget('cookie_name'));
我知道这已经是一个老生常谈的问题,但我最近来到这里,如果我是正确的,cookie需要排队等待下一个响应 您可以通过手动将cookie添加到响应中,如@Jan.J在他的回答中所述。但是,如果您需要以内联方式执行,这也可能适用于您:
Cookie::queue(
Cookie::forget('cookieName')
);
CookieJar
将把所有排队的cookie传递给下一个响应。在我的例子中,cookie中存储了一个数组,因此提供的方法都不起作用。如果正好提供一对数组,则应删除该数组:
Cookie::queue(Cookie::forget('array_name[provide_key]'));
公共函数funname(CookieJar$cookie)
$cookie->queue(cookie()->忘记('user_email');
$cookie->queue(cookie()->忘记('user_password')
您也可以这样做:
redirect('/')->cookie(cookie()->forget('my_super_cookie_name'));
不幸的是,以上这些对我都不起作用,我不确定这是否是这个版本的Laravel(5.1)的一个具体问题
我确实使用原始PHP使其工作,通过用一个已经过期的cookie覆盖现有cookie,我还必须指定一个路径使其工作。然而,它不像使用立面那样优雅
setcookie('COOKIE_NAME', time() - 3600, '/');
最近,我在使用localhost时遇到了这个问题,但问题是我编写了一些代码,这些代码在试图覆盖会话配置文件的过程中是不正常的。
所以
默认laravel
Cookie::queue(
Cookie::forget('name')
) ;
如果你没有对你的电脑做任何改动,它应该可以正常工作
session.php配置文件。
看看吧,你应该可以走了。
如果您做了一些更改,请尝试确保您的代码符合标准,并且一切正常 首先,确保导入了带有use
关键字的Cookie类,如下所示:
use Cookie;
接下来,创建一个函数并按名称删除cookie
Cookie::queue(
Cookie::forget('cookie_name_first')
);
Cookie::queue(
Cookie::forget('cookie_name_second')
);
您的代码是完美的,因此还有一些其他问题
Cookie是棘手的小^##$$,让事情变得更糟取决于客户端的实现;不同的浏览器可能会以不同的方式处理cookie边缘情况,甚至可能与它们的cookie处理相关
cookie的“删除”实际上包括向cookie发送更新,但过期日期在过去。来源:
最后,要删除cookie,服务器返回一个Set cookie头
过期日期在过去。服务器将成功运行
仅当路径和域属性在
Set Cookie标头与创建Cookie时使用的值匹配
创造
如果您的Laravel代码看起来很好(如原始问题中所示),我建议您在浏览器的开发工具中检查cookie。例如,Chrome的“网络”选项卡有一个“Cookies”选项卡,显示请求Cookies和响应Cookies。您可能会发现原始cookie和发送以取消设置它的cookie之间存在细微差异。根据上面的RFC,域中的差异(即使只是一个前导点)将破坏cookie的删除。$cookie的价值是什么?你救了我一天。这对我来说是非常不寻常的语法=\
use Cookie;
Cookie::queue(
Cookie::forget('cookie_name_first')
);
Cookie::queue(
Cookie::forget('cookie_name_second')
);