php - 通过 href get Route Methode 发送数据
问题描述
我构建了 get Methode 路由以通过控制器将数据存储在 mysql 数据库中。在这里你可以看到我的一部分观点
@foreach($groupsrequest as $grouprequest)
<a class="btn btn-primary btn-block" href="{{ route('mgmtgroups_approvel', ['idgroup' => $grouprequest->idgroup, 'iduser' => $grouprequest->iduser]) }}">
Gruppe <strong>{{$grouprequest->group_name}}</strong> Anfrage von User <strong>{{$grouprequest->username}}</strong>
</a>
@endforeach
这是我的网络路由文件,它将数据传递给控制器,数据将存储到 mysql 数据库中。
Route::get('/home/groupmgmt/approvel', 'GroupController@setGroupApprovel')->name('mgmtgroups_approvel');
现在我的问题,在我点击 a href 按钮后,我得到以下网址
http://localhost:8000/home/groupmgmt/approvel?idgroup=18445&iduser=123
我可以更改 url 参数并按回车键,然后将存储数据。但这不可能是正确的,因为我能够在数据库中存储假数据。例如,我可以创建不存在的用户 ID。如何以正确的方式做到这一点,这是不可能的,只有之前视图中显示的数据才能存储在数据库中?
解决方案
您可以使用laravel 的存在验证类型来验证用户 ID 的存在。
顺便说一句,如果 ID 是登录用户的 ID,那么您不需要通过查询参数传递它,您可以使用Auth::id()
laravel 的函数获取它。
另外我建议您使用 POST 方法而不是 GET 并将 csrf 令牌添加到请求中以提高安全性。此外,您应该验证请求以确保没有人可以将无效数据插入数据库。例如,如果这是一个注册批准脚本,您应该确保请求给定 ID 以在组上注册,否则您应该向用户显示错误。
推荐阅读
- c# - c# 基于Xpath生成XML文档
- mysql - mysql控制台中提供的密码问题
- javascript - 使用 Bokeh RadioGroup 在 Jupyter 中绘制选定的 Pandas DataFrame 子集
- laravel - Laravel GET 方法不在服务器中发送原始 JSON
- javascript - 如何在最终表单提交之前异步/等待多次上传?
- javascript - JavaScript 中类的 JSON 序列化
- c - 某个点计算不一致后的线性回归算法
- unit-testing - 使用 Jest 与 MQTT 进行单元测试
- c# - 可重用的 Linq 表达式(传递给项目不同部分的多个 .Where 子句)
- html - Django 如何自定义表单文件输入