如何阻止用户在多页测验中编辑网址?

Posted

技术标签:

【中文标题】如何阻止用户在多页测验中编辑网址?【英文标题】:How can I stop users from editing the url in a multi-page quiz? 【发布时间】:2021-11-08 09:29:27 【问题描述】:

我见过一些不同的在线测验/表格,其中使用了多个网页。如果您尝试通过编辑 URL 来跳过某个页面(例如,您在 www.exampledomain.com/pg2 并且您将其编辑为 www.exampledomain.com/pg3),它会将您重定向回您未完成的页面。

我正在开发一款在线游戏,每个级别都有不同的网页。我想帮助我找到一种方法来阻止用户编辑一个级别的 URL 并跳到下一个级别。有没有办法可以用 javascript、jQuery 等编写代码?

谢谢!

【问题讨论】:

您已经问过这个问题:How to create multi-page quiz。您是否阅读了Persist variables between page loads 并在此期间进行了一些尝试? Edit您的帖子并包括它们,请。您是否有一些可以检查用户 cookie 和会话数据的服务器端实现? 我很抱歉重新发布这个问题。前一个因为注意力不集中而关闭了,所以我创建了一个新的。我目前正在研究本地存储功能。感谢您的链接 这是一个长期存在的错误,对新用户来说是一个不幸的陷阱;见“You can edit the question or post a new one”。 哦,好的,我会记住这一点的。我已经使用会话/本地存储运行了一些简单的测试,并且效果很好,所以我将尝试将它应用到我的一些代码中。感谢您的帮助! 【参考方案1】:

是的,创建一个 JavaScript 数组,其中包含您要在每个级别上进行的更改,并在该级别完成时在该数组的帮助下编辑 DOM。可能你可以使用一个计数器变量在一个级别完成时递增,并将该变量设置为数组索引以获取相应的更改。

每当您制作此类网络游戏时,请尝试添加一些具有某些共同特征的元素等级。所以我认为即使是你的游戏也会有这样的元素。如果是这样,那么工作就很简单了,你可以在 JavaScript 的帮助下完成一个级别后更改页面的特定元素。

说第 1 级已完成,然后您可以设置用户是否已完成任务的条件,如果是,则在 JS 的帮助下创建一个模式屏幕,要求他们继续或离开,如果他们选择继续然后不要使用单独的 html 文件来创建下一个级别,只需使用 JS 并使用 innerHtmlinnerText 等方法更改 DOM。

【讨论】:

如果您需要更清晰的答案,可以将您的代码分享给我,以便我更深入地了解它。 感谢您的回答。这实际上是我考虑过的事情,但由于需要多长时间,我宁愿不在一个网页上拥有每个级别。游戏中也有几次页面刷新,导致游戏重启。 是的,我可以理解您的观点,对于这种情况,您需要迁移到 React 并使用 MangoDB 等数据库管理器为每个用户维护一个数据库。

以上是关于如何阻止用户在多页测验中编辑网址?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Phonegap 和 iOS 5.1 时如何阻止 HTML 5 数据库被删除

将用户输入数据保存在多页 php 表单中

如何阻止360浏览器访问指定网站?

为啥我不能阻止用户编辑 PrimeNG 表单字段值?

如何在多项选择(mcq)测验中显示正确/错误的符号

Ionic App 被 iOS“仅限特定网站”限制阻止