我的密码重置过程如下:
我无法使用$_SERVER['HTTP_REFERER']
,因为在重置密码时,我的逻辑中有多个重定向用于某些身份验证算法。使用HTTP_REFERER是不可靠的(我认为)。
将原始URL存储在cookie中,然后在用户完成密码重置过程后在cookie中使用该数据是不是一个坏主意?或者我应该采用不同的路线,并将重定向链接作为重置电子邮件链接中的参数保存,并将其存储在重置密码表单的隐藏字段中?
任何建议都表示赞赏!
答案 0 :(得分:0)
您可以创建一个唯一的ID。然后,您将发送一个指向电子邮件地址的链接,其中包含get参数中的唯一ID。:reset_password?id = 21948HJK9 要验证它是否是正确的用户,您可以将ID存储在数据库中,如果有人试图在24小时后访问它,则将其删除。打开reset_password时,在数据库中搜索id并验证它。在数据库中,id连接到帐户。如果数据库中的id和get参数匹配,则验证。
答案 1 :(得分:0)
从您提供的流程中,步骤1应该将URL的值存储在某处。
您的"重置密码"按钮可能是这样的:
<a href="reset_password.php?prev_url=<?php echo urlencode($_SERVER['REQUEST_URI']); ?>">Reset password</a>
这将为您提供一个变量,其中包含当前编码的URL,即用户所在的页面。
然后,reset_password.php
文件可以将$_GET['prev_url']
URL存储在您的密码重置表中(也存储重置链接)。
因此,在您的最后一步中,当验证重置链接时,只需获取表格中的prev_url
列,将其存储在变量(我的示例中为$prev_url
)中并执行:< / p>
header('location:'.$prev_url);