Jquery - 清除或删除URL参数

时间:2015-12-24 03:17:00

标签: javascript php jquery ajax url

问候,我正在使用PHP,MySQL和AJAX进行密码恢复系统,系统会生成一个带有加密代码的链接,并将其发送给用户的邮件。

生成的加密链接示例:

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

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

问题:

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

这可能吗?

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:3)

我从您的问题中了解到,您需要一种方法来设置密码重置并且不允许重新重置。

  1. 发送带编码链接的电子邮件
  2. 让用户点击链接并访问页面
  3. Page将获得code GET参数(PHP或JS)
  4. 做一些魔术来检查数据库(PHP)中是否存在代码
  5. 如果代码存在,则允许密码重置并从数据库中删除代码(PHP)
  6. 如果没有,请显示错误消息(PHP)
  7. 之后重定向到index.html或index.php(JS)
  8. 最后一步是删除URL变量。如果用户再次检查相同的URL,它将从第3步开始。第4步应该停止重新重置密码。

答案 1 :(得分:1)

您可以使用此技术刷新页面。

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

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

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

您还可以浏览其他HTML5历史记录API方法,例如history.replaceState()

然而,这些都不是最好的做法 - 我认为最好的办法是让查询字符串保持不变,但只有在密码设置正确的情况下才会触发AJAX返回时的警告框/重置。

换句话说,让你的重置处理程序返回一个可读的响应,返回正确的标题(例如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
    }
});