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

Php 从通过电子邮件发送的weblink解析密码重置密钥,php,html,email,url,Php,Html,Email,Url,由于我在我的演示网站中切换到使用哈希密码,我需要提供一种重置忘记密码的方法 我已经有了页面和php设置,可以发送一封带有url+密钥的电子邮件,用户需要该密钥才能设置新密码。电子邮件包含要单击的url,链接将用户带到重置密码页面 我遇到的一点麻烦是从url中提取密钥信息,这样我就可以使用它来比较从重置密码提交中生成的密钥。提交忘记密码表单时,数据库会正确插入密钥 我假设我需要使用parse_url从链接中提取此信息,但我不太确定如何仅从链接中提取关键信息 我认为PHP_URL_查询可以让我找到U

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

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

我遇到的一点麻烦是从url中提取密钥信息,这样我就可以使用它来比较从重置密码提交中生成的密钥。提交忘记密码表单时,数据库会正确插入密钥

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

我认为PHP_URL_查询可以让我找到URL的正确部分。从这里开始,我不太确定下一步该做什么,因为PHP_URL_查询提供了所有这些:

密钥='.$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);

    }
}

通过以下方式实现了这一点……这只是一个开始。再次感谢大家

<?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;

?>

为什么不使用
$\u GET
?类似于。htmlspecialchars($_GET[“key”])?绝对不要做你正在做的事。它不安全。使用本指南:你需要学习如何逃跑。对SQL查询进行HTML转义毫无意义,而且仍然不安全。感谢insight的朋友们……这是我在这一特定网页设计中的第一次尝试。我要好好看看导游。