通过电子邮件发送的weblink解析密码重置密钥

时间:2017-06-07 02:45:32

标签: php html email url

由于我在演示网站中切换到使用散列密码,我需要提供重置忘记密码的方法。

我已经有页面和php设置发送一个带有url +密钥的电子邮件,用户需要这些密码才能设置新密码。该电子邮件包含要单击的URL,该链接将用户带到重置密码页面。

我遇到一些麻烦的部分是从网址中提取密钥信息,以便我可以用它来与重置密码提交产生的​​密钥进行比较。数据库在提交忘记密码表单时正确插入密钥。

我假设我需要使用parse_url从链接中提取此信息,但我不太确定如何仅从链接中提取关键信息。

我认为PHP_URL_QUERY会将我带到URL的正确部分。从这里开始我不太确定下一步该做什么,因为PHP_URL_QUERY给了我所有这些:

键=” $ 2Y $ 10 $ q53hrjswTfXnkxg8QeJysezbBi91t4yJcbV9bH3addOSiotr6kE1

当我真正想要的是做这个比较时:

”。$ 2Y $ 10 $ q53hrjswTfXnkxg8QeJysezbBi91t4yJcbV9bH3addOSiotr6kE1

这是我现在的代码......

<?php
require_once '../php/connect.php';

function URL() {
  $purl = 'http';
    if ($_SERVER["SERVER_PORT"] == "80") {
      $purl .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
    }
  return $purl;
}

$key = parse_url($purl, PHP_URL_QUERY)


$qry = mysqli_query($link, "SELECT id FROM planner WHERE rkey = '$key'");
$array = mysqli_fetch_array($qry);

    }
}

我想我只需要一种方法从其余部分剥离key = part,但我不确定这是不是正确。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

使用以下内容......这只是一个开始。再次感谢大家。

<?php
require_once '../php/connect.php';

$sub = htmlspecialchars($_GET["key"]);
$ser = "'.";
$rkey = str_replace($ser,'',$sub);

$qry = mysqli_query($link, "SELECT id FROM planner WHERE rkey = '$rkey'");
$row = mysqli_num_rows($qry);

echo $row;

?>