我无法验证确认电子邮件的链接。我可以向用户发送一个来自我的数据库的确认链接,就像这样的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
字段中插入。
和 在我的confirm.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 results
,而当用户点击其电子邮件中的确认链接时,链接的相同代码在数据库中!能告诉我为什么会这样吗?
由于
答案 0 :(得分:1)
在查询中用单引号包装你的$ 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
这里,如果您看到单引号不查找变量。无论里面有什么&#39; &#39;被视为字符串并以此形式返回。
案例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'
此处由于查询在双引号内,因此读取该变量。但被认为是字符串,因为它用单引号封装。