当前位置: 首页 > 知识库问答 >
问题:

如何防止用户取消页面重定向?

丘普松
2023-03-14

我有一行代码:

location.href = 'payments/basic.php';

它工作良好,但用户可以简单地按下Esc键来取消操作。我试图使用一个事件侦听器来防止Esc键被按下,但它只在用户在初始页面时起作用。一旦他们被重定向,它就会停止工作,他们可以在浏览器中快速按Esc键或地址栏旁边的大X来取消重定向。

有什么办法可以让我完全避免?

编辑:我之所以要这样做,是因为在登录时,它们会自动发送到索引页。我在我的数据库中有一个标志,它检查用户是否已经付款。然后在索引页上,我有一个小脚本,它查询DB以检查标志是真的还是假的。如果它是假的,他们会立即被通知他们正在被重定向支付他们的款项。如果在重定向的这一点上,他们取消,他们将能够保持在索引页上没有付款。

共有2个答案

汪安然
2023-03-14

我认为防止Esc键停止导航的唯一方法就是根本不离开原始页面导航。而不是做

location.href = 'payments/basic.php';

basic.php发出XHR或fetch请求,并用结果填充当前文档,而不是加载一个全新的文档--就像SPA的工作方式一样。

(您几乎肯定希望对basic.php进行一些更改-例如,让它返回易于解析的JSON,该JSON包含用于填充页面的数据,而不是HTML文档)

关于编辑

在登录时,它们会自动发送到索引页

如果在重定向的这一点上,他们取消,他们将能够保持在索引页上没有付款。

如果您试图阻止对原始页面的访问,那么在您检查了数据库中的标志之前,不要为原始页面提供服务。在验证用户的凭据之前,首先不要使用索引页。如果它们没有被授权,在PHP中(而不是在JS中)将它们重定向到付款页面。不需要弄乱用户的转义键。

姜经武
2023-03-14

为什么不反过来做呢?默认为付款页面,如果已经付款,则重定向到索引。哈哈。

 类似资料:
  • 问题内容: 我有一个中心对齐的DIV网站。现在,有些页面需要滚动,有些不需要。当我从一种类型移动到另一种类型时,滚动条的外观会将页面向侧面移动几个像素。如果没有在每个页面上明确显示滚动条,有什么办法可以避免这种情况? 问题答案: overflow-y:scroll是正确的,但是您应该将其与html标记一起使用,而不是body,否则在IE 7中 会出现一个双滚动条,因此正确的CSS是:

  • 我试图实现一些东西作为“竞赛条件”。这个竞赛条件必须遵循这些情况: 同时触发两个HTTP调用。 返回第一个成功完成的调用的响应。 处理最后一个呼叫。(这里最重要的是我不能丢弃最后一个呼叫,我确实需要处理它的结果:无论它的状态、成功或失败)。 此代码示例是我实现的解决方案中最接近的一个: 在这个例子中,我使用了Flux.first方法,它帮助我返回了第一个调用,但是它丢弃(取消)了第二个调用,这是一

  • 这是我的用户注册数据库的方式,但我的问题是:如何防止数据库具有相同用户名的副本,或者换句话说,如果用户名存在于数据库。

  • 问题内容: 发送XMLHttpRequest-s时是否可以防止浏览器遵循重定向(即,获取重定向状态代码并自己处理)? 问题答案: 不符合XMLHttpRequest对象的W3C标准(添加了重点): 如果响应是HTTP重定向: 如果Location头传达的URL的原点与XMLHttpRequest的原点是相同的原点,并且重定向不违反无限循环预防措施,请在遵循相同原点请求事件规则的情况下 透明地遵循重

  • 在我的项目中,我有两页,第一页用于输入数据,第二页用于向用户显示数据。刷新结果页时,数据将被复制。我试图解决这个问题,但我不熟悉PRG模式。如果用户刷新结果页,我希望防止重复。

  • 问题内容: 一些网站具有用于“破解” 附件的代码,这意味着,如果将页面作为父页面加载到内部,则某些Javascript 会将外部窗口重定向到。 通常,此Javascript如下所示: 我的问题是:作为父页面的作者而不是内部页面的作者,如何防止发生此突破? PS在我看来,这应该是跨站点安全性违规,但事实并非如此。 问题答案: 几乎可以满足您的要求: 如果要允许顶级重定向,请指定。