Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Cookie::忘记不工作laravel 5.1_Php_Laravel_Laravel 5.1 - Fatal编程技术网

Php Cookie::忘记不工作laravel 5.1

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

我试图让Laravel5.1删除我的cookie,但是它不会删除,即使我用重定向返回它

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')
);