gpt4 book ai didi

php - 验证确认密码的问题

转载 作者:行者123 更新时间:2023-11-29 12:31:06 24 4
gpt4 key购买 nike

我在验证确认电子邮件的链接时遇到问题。我可以从我的数据库以 HTML 电子邮件的形式向用户发送确认链接,如下所示

$msg = "
<a href=\"http://asite.ca/assets/functions/confirmation.php?key=$permissionCode\" target=\"_blank\">Click To Confirm</a>
";

$permissionCode 是这样生成的

$permissionCode = substr(md5(rand(1000, 9999999)), 0, 12);

我将其插入到confirm_code字段中。

和 在我的确认.php 中我有

$key    = $_Get["key"];
$sql = "SELECT * FROM `contact_request` WHERE `confirm_code` = $key";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "We Will Contact You Soon";

} else {
echo "0 results";
}

但是当用户单击电子邮件中的确认链接时,我得到 0 结果,而数据库中的链接代码相同!您能告诉我为什么会发生这种情况吗?

谢谢

最佳答案

在查询中用单引号将 $key 括起来

$sql = "SELECT * FROM `contact_request` WHERE `confirm_code` = '$key'";

按照评论中的要求,请参阅解释......

案例1:

$key =substr(md5(rand(1000, 9999999)), 0, 12);
$sql = 'SELECT * FROM `contact_request` WHERE `confirm_code` = $key';
echo $sql;

输出为

SELECT * FROM `contact_request` WHERE `confirm_code` = $key

这里如果你看到单引号并不查找变量。 ' ' 内的任何内容都被视为字符串并按原样返回。

情况2:

$key =substr(md5(rand(1000, 9999999)), 0, 12);
$sql = "SELECT * FROM `contact_request` WHERE `confirm_code` = $key";
echo $sql;

输出为

SELECT * FROM `contact_request` WHERE `confirm_code` = dcd9c750bab0

这里由于查询位于双引号内,因此读取该变量。但被视为 int。

情况3:

$key =substr(md5(rand(1000, 9999999)), 0, 12);
$sql = "SELECT * FROM `contact_request` WHERE `confirm_code` = '$key'";
echo $sql;

输出为

SELECT * FROM `contact_request` WHERE `confirm_code` = 'fd7c159e29c6'

这里由于查询位于双引号内,因此读取该变量。但被视为字符串,因为它用单引号封装。

关于php - 验证确认密码的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27498302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com