Php Cookie中的密码重置重定向URL

Php Cookie中的密码重置重定向URL,php,symfony,Php,Symfony,我的密码重置过程如下: 用户单击按钮,向提供的电子邮件发送重置电子邮件 点击密码重置链接,打开网页 用户提交新密码 重定向回用户最初所在的位置(例如“查看购物车页面”) 我无法使用$\u服务器['HTTP\u REFERER'],因为在重置密码时,某些身份验证算法的逻辑中存在多个重定向。使用HTTP_REFERER是不可靠的(我认为) 将原始URL存储在cookie中,然后在用户完成密码重置过程后利用cookie中的数据,这是一个坏主意吗?或者我应该走不同的路线,将重定向链接作为参数保留在重置电

我的密码重置过程如下:

  • 用户单击按钮,向提供的电子邮件发送重置电子邮件
  • 点击密码重置链接,打开网页
  • 用户提交新密码
  • 重定向回用户最初所在的位置(例如“查看购物车页面”)
  • 我无法使用
    $\u服务器['HTTP\u REFERER']
    ,因为在重置密码时,某些身份验证算法的逻辑中存在多个重定向。使用HTTP_REFERER是不可靠的(我认为)

    将原始URL存储在cookie中,然后在用户完成密码重置过程后利用cookie中的数据,这是一个坏主意吗?或者我应该走不同的路线,将重定向链接作为参数保留在重置电子邮件链接中,并将其存储在重置密码表单的隐藏字段中


    任何建议都将不胜感激

    您可以创建一个唯一的id。然后,您将使用get参数f.e.:reset_password?id=21948HJK9中的唯一id发送到电子邮件地址的链接
    为了验证它是否是正确的用户,您可以将id存储在数据库中,并在24小时后有人试图访问它时将其删除。当“重置密码”打开时,您可以在数据库中搜索id并进行验证。在数据库中,th id连接到帐户。如果数据库中的id和get参数匹配,则会对其进行验证。

    根据您提供的过程,步骤1应将URL的值存储在某个位置

    您的“重置密码”按钮可能如下所示:

    <a href="reset_password.php?prev_url=<?php echo urlencode($_SERVER['REQUEST_URI']); ?>">Reset password</a>
    

    我会在密码重置后将它们发送回首页或自己登录。有什么特殊原因吗?我在网上看到了一些东西,说明了为什么返回登录页面或主页是一个更好的主意,但没有什么真正有说服力的@史密斯这是我期望被带到个人的地方,即使是在电子商务网站上。通过电子邮件发送重置令牌意味着在用户实际重置密码之前有一段时间。用户是否还记得(更不用说关心)他们请求重置时的位置?所以我和史密斯在一起。但是,如果你决定这样做,那么就进入无状态状态并将重定向信息添加到你的电子邮件重置链接。我认为他已经完成了这一部分,问题是如何将用户返回到以前的位置,然后他可以将其添加到数据库的同一列中,其中包含id和用户数据
    header('location:'.$prev_url);