Jquery-清除或删除URL参数


Jquery - Clear or Remove the URL parameters

此致,我正在用PHP、MySQL和AJAX做一个密码恢复系统,系统会生成一个带有加密代码的链接,并将其发送到用户的邮件中。

生成加密链接的示例:

$link = www.dominio.com/reset/?code=98rudrm2093xda

用户必须从您的电子邮件中打开链接,以确认请求,网站使用PHP和AJAX desencrita检测URL的代码,并将其与数据库的代码进行比较,如果存在,则创建一个新密码,这一切都是在AJAX中完成的,但有一点,如果用户返回以重新加载web,则会收到数据库中不存在代码的警告。

问题:

由于我可以用jQuery擦除URL的代码,然后重置密码,以防止在刷新网页时出现警报窗口。

这可能吗?

我非常感谢你的帮助

我从你的问题中了解到,你想要一种方法来设置密码重置,而不允许重新重置。

  1. 发送带有编码链接的电子邮件
  2. 让用户点击链接并访问页面
  3. 页面将获得code get参数(PHP或JS)
  4. 做一些魔术来检查数据库中是否存在代码(PHP)
  5. 如果存在代码,则允许重置密码并从数据库中删除代码(PHP)
  6. 如果没有,则显示错误消息(PHP)
  7. 之后重定向到index.html或index.php(JS)

最后一步是删除URL变量。如果用户再次检查相同的URL,它将从第3步开始。第4步应停止重新重置密码。

您可以使用它来刷新页面。

window.location.href = window.location.href.split('?')[0];

如果你不想刷新或重定向,你可以使用这个.pushState(),它将更新你的浏览器历史记录并更改页面上的URL。这会阻止刷新,但点击浏览器上的后退按钮会再次触发刷新。

EXAMPLE: history.pushState('/some-url');

您还可以探索其他HTML5历史API方法,如history.replaceState()

然而,这些都不是最好的做法——我认为你最好的选择是让查询字符串保持原样,但只有在密码设置正确的情况下,才会在AJAX返回时触发Alert box/reset。

换句话说,让您的重置处理程序返回一个可读的响应,返回正确的标头(例如,200表示成功,4xx表示失败,等等),并将您的$.ajax()调用调整为类似的调用

$.ajax({
    url: your_url,
    data: your_data,
    type: 'POST',
    success: function(e) {
        // Password was reset
        // ...show your alert
    },
    error: function(e) {
        // Code wasn't found or reset failed
        // ...do nothing or show an error
    }
});