Php “使”按钮将数据发送到数据库(重新加载时可用空白页?)
我有一个CRUD系统,允许用户创建、编辑和删除他们自己的社交组。然后,这些组将显示在公共页面上,其他用户可以查看和加入社交组Php “使”按钮将数据发送到数据库(重新加载时可用空白页?),php,laravel,Php,Laravel,我有一个CRUD系统,允许用户创建、编辑和删除他们自己的社交组。然后,这些组将显示在公共页面上,其他用户可以查看和加入社交组 create_group系统工作正常,组显示在公共页面上。信息存储在数据库表组中 我希望用户能够单击“加入组”按钮,并在数据库中记录组标题 这样一来,他们就可以从仪表板上查看后来加入的组 我不是100%确定如何去做,因为我是新的编码。我的直觉是创建另一个CRUD系统,称为Join,但这可能是过度杀戮吗 我采取了以下步骤: 已创建名为“联接”的数据库表 创建了与“创建组”C
create_group
系统工作正常,组显示在公共页面上。信息存储在数据库表组中
我希望用户能够单击“加入组”按钮,并在数据库中记录组标题
这样一来,他们就可以从仪表板上查看后来加入的组
我不是100%确定如何去做,因为我是新的编码。我的直觉是创建另一个CRUD系统,称为Join,但这可能是过度杀戮吗
我采取了以下步骤:
已创建名为“联接”的数据库表
创建了与“创建组”CRUD相同的CRUD系统。我想我不会使用这个CRUD的编辑或创建功能
我将此按钮放置在公共组可查看页面上:
单击按钮时发生了一些非常奇怪的事情,它将我带到正确的页面http://version2.test/join
但页面为空白,显示
页面过期
错误。但是,如果我刷新页面,甚至将URL复制到新页面,它将正确显示
此外,在查看http://version2.test/join
,我看不到显示的组标题
更新#1-然后我在按钮上添加了@csrf,如下所示:
@csrf
起初,我认为这可以修复“页面过期”错误,但后来意识到它没有。“加入组”按钮仍指向http://version2.test/join
但页面显示“页面已过期”错误。但是,如果我刷新页面,甚至将URL复制到新页面,它将正确显示
JoinController.php
第419页
这意味着路由join.store
位于VerifyCsrfToken
中间件下,该中间件可保护您的应用程序免受跨站点请求伪造攻击,并且发布的表单数据没有(或无效)令牌\u
你需要做的就是添加一个CSRF令牌,而且你没有发布任何东西,所以你可以从验证中得到一个重定向
<form method="post" action="/test">
@csrf
<input type="hidden" name="group_title" value="{{ $group->group_title }}">
<input type="submit" value="Join Group" class="btn btn-success" />
</form>
另一个选项是在中间件中禁用路由保护(这对于使用Postman的API测试很有用)
不要这样做
第419页
这意味着路由join.store
位于VerifyCsrfToken
中间件下,该中间件可保护您的应用程序免受跨站点请求伪造攻击,并且发布的表单数据没有(或无效)令牌\u
你需要做的就是添加一个CSRF令牌,而且你没有发布任何东西,所以你可以从验证中得到一个重定向
<form method="post" action="/test">
@csrf
<input type="hidden" name="group_title" value="{{ $group->group_title }}">
<input type="submit" value="Join Group" class="btn btn-success" />
</form>
另一个选项是在中间件中禁用路由保护(这对于使用Postman的API测试很有用)
不要这样做
如果这是一个表单,您可以检查
'group_title' => $request->get('group_title')
进入
在你的存储中
方法就可以做到这一点
由于此字段是必需的,并且您没有收到错误,因此数据将传递给您的操作。检查是否有效
如果这是一个表单,您可以检查是否更改
'group_title' => $request->get('group_title')
进入
在store
方法中,将实现这一功能
由于此字段是必需的,并且您没有收到错误,因此数据将传递给您的操作。检查是否有效
我认为csrf
在这里不是问题,因为他的表单已经有@csrf
blade指令,除非laravel版本低于5.6。@Caddy DZ非常有效,谢谢。我现在正在查看页面,但我没有看到显示组标题,并且数据库是空的。我开始想,也许我不应该创建一个名为“Join”的表,而应该创建一个名为“groups\u ive\u Join”的现有“Users”表的字段?@MateusJunges CSRF位于group\u Join.destroy
路径中,但他在第一个表单Join.store中缺少它。我已经从表单中删除了CSRF,并将其插入到了`join.store``并指向空页。将其插入到join.store
中是什么意思?用更改更新您的问题,我将用插入数据库的工作代码更新它。我认为csrf
不是这里的问题,因为他的表单已经有@csrf
blade指令,除非laravel版本低于5.6。@Caddy DZ工作顺利,谢谢。我现在正在查看页面,但我没有看到显示组标题,并且数据库是空的。我开始想,也许我不应该创建一个名为“Join”的表,而应该创建一个名为“groups\u ive\u Join”的现有“Users”表的字段?@MateusJunges CSRF位于group\u Join.destroy
路径中,但他在第一个表单Join.store中缺少它。我已经从表单中删除了CSRF,并将其插入到了`join.store``并指向空页。将其插入到join.store
中是什么意思?用更改更新您的问题,我将用插入数据库的工作代码更新它。这不起作用。我仍然被引导到一个死页,这个死页可以刷新,数据仍然不能进入数据库。这不起作用。我仍然被引导到一个死页上,这个死页可以进行刷新,数据仍然无法进入数据库。