Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery-清除或删除URL参数_Javascript_Php_Jquery_Ajax_Url - Fatal编程技术网

Javascript Jquery-清除或删除URL参数

Javascript Jquery-清除或删除URL参数,javascript,php,jquery,ajax,url,Javascript,Php,Jquery,Ajax,Url,关于这一点,我正在用PHP、MySQL和AJAX开发一个密码恢复系统,该系统生成一个带有加密代码的链接,并将其发送到用户的邮件中 生成的加密链接示例: $link = www.dominio.com/reset/?code=98rudrm2093xda 用户必须打开您电子邮件中的链接,以确认请求,网站使用PHP和AJAX desencrita检测URL的代码,并将其与数据库的代码进行比较,如果存在,则创建一个新密码,这都是在AJAX中完成的,但如果用户返回重新加载web,您将收到一个警报,提示

关于这一点,我正在用PHP、MySQL和AJAX开发一个密码恢复系统,该系统生成一个带有加密代码的链接,并将其发送到用户的邮件中

生成的加密链接示例:

$link = www.dominio.com/reset/?code=98rudrm2093xda
用户必须打开您电子邮件中的链接,以确认请求,网站使用PHP和AJAX desencrita检测URL的代码,并将其与数据库的代码进行比较,如果存在,则创建一个新密码,这都是在AJAX中完成的,但如果用户返回重新加载web,您将收到一个警报,提示数据库中不存在该代码

问题:

$link = www.dominio.com/reset/?code=98rudrm2093xda
因为我可以用jQuery擦除URL的代码,然后重置密码,以防止刷新网页时出现警报窗口

这可能吗


我非常感谢你的帮助

您可以使用它来刷新页面

window.location.href = window.location.href.split('?')[0];
如果不想刷新或重定向,可以使用此
.pushState()
,它将更新浏览器历史记录并更改页面上的URL。这将阻止刷新,但点击浏览器上的后退按钮将再次触发刷新

EXAMPLE: history.pushState('/some-url');
您还可以探索其他HTML5历史API方法,如
history.replaceState()

但是,这些都不是最好的做法——我认为最好的办法是让querystring保持完整,但只有在正确设置密码的情况下,才会在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
    }
});

你可以使用这个技术来刷新页面

window.location.href = window.location.href.split('?')[0];
如果不想刷新或重定向,可以使用此
.pushState()
,它将更新浏览器历史记录并更改页面上的URL。这将阻止刷新,但点击浏览器上的后退按钮将再次触发刷新

EXAMPLE: history.pushState('/some-url');
您还可以探索其他HTML5历史API方法,如
history.replaceState()

但是,这些都不是最好的做法——我认为最好的办法是让querystring保持完整,但只有在正确设置密码的情况下,才会在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
    }
});

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

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

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

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

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

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

    用户更改密码后,您应更改该密码。。所以,如果用户重新加载页面,他将不再获得数据库中存在的相同代码,为什么不在用户成功更改密码或链接在一定时间后过期后在数据库中设置一个标志,以便您可以显示相关的错误消息?为什么您不能简单地重定向回主页“重置”URL?[Mohamed],谢谢你的帮助。它工作得很好,我想要的是消除URL的参数,这不是服务器端更合适的方法。我不知道编辑url是否最可靠。您应该在用户更改密码后更改该代码。。所以,如果用户重新加载页面,他将不再获得数据库中存在的相同代码,为什么不在用户成功更改密码或链接在一定时间后过期后在数据库中设置一个标志,以便您可以显示相关的错误消息?为什么您不能简单地重定向回主页“重置”URL?[Mohamed],谢谢你的帮助。它工作得很好,我想要的是消除URL的参数,这不是服务器端更合适的方法。我不知道编辑url是否最可靠。正如@Lionel Richie所说,我想知道是否可以在不刷新网页的情况下删除、更新浏览器或删除url。@学习和共享哦,好的。(另外,通过在前面加上
    @
    标记用户,而不是像问题标记那样使用
    [方括号]
    )@学习和分享如果是这种情况,请查看及其答案。我想这就是你想要的。正如@Lionel Richie所说的,我想知道是否可以在不刷新网页的情况下删除、更新浏览器或删除URL。@学习和共享哦,好的。(另外,在用户标签前加上
    @
    ,不要像问题标签那样使用
    [方括号]
    。@Learnin