Php 为什么我的曲奇饼在拉拉维尔(使用宅地、流浪者)不持久?
我一直在Windows 10的命令提示符下使用Laravel,但是在项目之间切换的困难使我转而使用Homestead。然而,在我在那里开始的一个新项目中,我无法让cookies持续下去。 以下是我当前的代码(仅用于调试此问题): 预期输出:在连续加载页面时,访问者将看到与最初打开页面时相同的unix时间戳(我理解这不是一种很好的处理方法,同样,这只是为了重现错误。) 现实:每个页面加载都会产生不同的时间戳 我查阅了尽可能多的讨论。我尝试过的解决方案:Php 为什么我的曲奇饼在拉拉维尔(使用宅地、流浪者)不持久?,php,laravel,cookies,vagrant,homestead,Php,Laravel,Cookies,Vagrant,Homestead,我一直在Windows 10的命令提示符下使用Laravel,但是在项目之间切换的困难使我转而使用Homestead。然而,在我在那里开始的一个新项目中,我无法让cookies持续下去。 以下是我当前的代码(仅用于调试此问题): 预期输出:在连续加载页面时,访问者将看到与最初打开页面时相同的unix时间戳(我理解这不是一种很好的处理方法,同样,这只是为了重现错误。) 现实:每个页面加载都会产生不同的时间戳 我查阅了尽可能多的讨论。我尝试过的解决方案: 使用声明cookie的路由方法 使用好的旧
- 使用声明cookie的路由方法
- 使用好的旧PHP setcookie
- 使用Cookie:make和Cookie:forever
- 在加密Cookie中的异常中添加“customer_id”
- 在web中间件中放置路由
- 擦除php artisan缓存,重新启动vagrant
- 通过chmod使会话文件夹可编辑
因为我之前没有通过Xampp的PHP遇到过类似的问题,所以我不得不假设Vagrant有一个(希望是)我还不知道的琐碎而明显的问题。任何建议都将不胜感激 排队的cookie仅随响应一起发送,因此请确保控制器函数确实返回响应
使用light\Support\Facades\Cookie;
// ......
公共函数构造(请求$Request){
$customer_id=Cookie::get('customer_id');
如果(!$customer\u id){
Cookie::queue('customer_id',time(),3600);
}
}
公共功能foo(){
...
返回响应(“某些文本”);
}
此外,如果使用某种api,则必须添加中间件以在响应中包含cookie。请参见您在哪个类中使用此功能?@Jonathan它位于我通过php artisan创建的自定义控制器中。基本上没什么特别的。你到底想用饼干做什么?您需要进一步访问什么(当然应该是什么)
$customerId=Cookie::get('customer_id')代码>?@Jonathan你说得对,我附加的代码很不可靠,我更新了它。在我的辩护中,这只是我创建的一个快速复制的示例,现在已经是第20次迭代了,这让我认为这是正确设置Homestead服务器的一个问题。-其基本思想是:当新客户打开页面时,他们会在cookie中被分配一个唯一的id,通过该id,他们可以继续填写相同的多页问卷,即使他们关闭浏览器并稍后返回。哇,我不敢相信这是如此简单,但现在它起作用了。。。整个下午我都在思考这个问题!谢谢你,丹尼尔!因此,如果我理解正确的话,最后我的问题是我从来没有离开过构造函数,总是dd-d或者带着一些东西离开。现在我觉得自己很笨。再次感谢!
use Illuminate\Support\Facades\Cookie;
// ......
public function __construct(Request $request) {
$customer_id = Cookie::get('customer_id');
if(!$customer_id) {
Cookie::queue('customer_id', time(), 3600);
}
dd($customer_id);
}