【问题标题】:In Laravel I want a page history not be stored in browser history?在 Laravel 中,我希望页面历史记录不存储在浏览器历史记录中?
【发布时间】:2020-06-15 11:26:53
【问题描述】:

目前,我正在使用Laravel 5.8 处理一个基于测验的项目。但是有一种情况,用户需要提供某些输入才能参与测验。之后,他们将提交测验,然后该测验的答案就会出现。但是当用户按下后退按钮时出现问题,然后测验参与页面再次出现。现在他们可以再次进行相同的测验。但我想要的是,如果用户按下后退按钮,它将转到测验创建页面,而不是测验参与页面。同时,如果用户从测验创建页面按下前进按钮,它将转到答案页面,而不是测验参与页面。

简要演示我想要什么:

`Quiz creation page`=> `Quiz participation Page (Can come after giving input in quiz creation page)`=>`Quiz Answer Page`

如果用户按下后退和前进按钮,它将在以下两页之间循环。

`Quiz creation page`=>`Quiz Answer Page`

测验参与页面不会出现在浏览器历史记录中,因此如果用户按下后退和前进按钮,该页面将不会出现。那么我该如何实现呢?

There is an interesting point if a user knows the **Quiz participation page** they can go to that page.

【问题讨论】:

  • 您不能要求浏览器不记住链接。但是,您可以在某些操作(例如通过测试)后使 URL 过期。

标签: javascript laravel laravel-5.8 back forward


【解决方案1】:

如果您希望这样做,您可能需要跟踪用户的进度。您不能禁止用户保存历史记录,但可以重定向当前用户的进度。

创建一个跟踪用户进度的表,或者添加finished_at 来跟踪测验是否完成,以便您可以立即重定向用户。

use Auth;

$progress = QuizProgress::where('user_id', Auth::user()->getKey())
    ->where('quiz_id', 1)
    ->firstOrFail();

if ($progress->finished_at) {
    return redirect();
}

return redirect()->url('quiz/' . $progress->current_progress);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 2015-06-14
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 1970-01-01
    • 2010-09-22
    相关资源
    最近更新 更多