php - 如何防止在laravel中手动设置url
问题描述
我创建了一个测验应用程序。其中学生参加的问题,然后单击下一个按钮出现下一个问题。现在的问题是学生在第二个问题上,并且 URL 像“ takeQuizStudent/149?page=2
”,他手动将 URL 更改为“ takeQuizStudent/149?page=1
”。所以它不应该发生。一旦点击下一个问题,他就不能回到上一个问题。
解决方案
您应该从控制器中检查请求页码session
,例如
public function show(Request $request, $id)
{
$value = $request->session()->get('pageNumber'); //2
//$id = 1
if($id < $value){
return response("invalid request",504);
}
//else update pageNumber value and do continue
// Via a request instance...
$request->session()->put('pageNumber', '3');
// Via the global helper...
session(['pageNumber' => '3']);
.....
}
确定会话中是否存在项目
要确定会话中是否存在项目,您可以使用该has
方法。如果项目存在且不存在,则该has
方法返回:true
null
if ($request->session()->has('pageNumber')) {
//
}
要确定一个项目是否存在于会话中,即使它的值为null
,您也可以使用该exists
方法。如果项目存在,则该exists
方法返回:true
if ($request->session()->exists('pageNumber')) {
//
}
推荐阅读
- powershell - 在powershell中优化多个文件中的替换操作
- php - PHP 致命错误:我是 php 新手。在我的 wordpress 网站中出现这个未知错误
- python - Python pandas 数据框无法删除 int64 列
- selenium-webdriver - 如何使用以下代码编写点击按钮代码
- pyspark - 无法选择表中的列,因为列名之一是限制
- javascript - 保存在数据库中后,对象数组修改为对象数组数组
- r - 如何在点阵的条形图中设置 alpha?
- c# - MVC 中的 SSRS ReportViewer 未将参数传递给 DataSource
- sql-server - 如何在 Azure SQL 上禁用强密码
- liferay - portlet.getInstanceId() 在 portlet hook 的 JSP 中总是返回 null