我正在创建一个验证码系统,用户会收到一封包含代码的电子邮件,他们会访问我的网站,输入该代码,如果代码与数据库表“ verificationcodes”中的代码匹配,则将他们重定向到另一个网址。但是到目前为止,我输入的每个代码都是testsite.php?code =不匹配的。我在做什么错了?
<?php
if (isset($_POST['code-submit'])) {
require 'notseendatabasehandler.php';
$code = $_POST['code'];
//Checking for empty fields
if (empty($code)) {
header("Location: testsite1.php?error=emptyfields");
exit();
}
else {
$sql = "SELECT codeNumber FROM verificationcodes;";
$result = mysqli_query($conn, $sql);
if ($result == $code) {
header("Location: testsite2.php?code=success");
exit();
}
else {
header("Location: testsite1.php?code=notmatching");
exit();
}
}
}
//Sending the user backwards if they entered incorrectly
else {
header("Location: homepage.php");
exit();
}
答案 0 :(得分:-1)
您需要按以下方式更改代码:
$conn->prepare("SELECT codeNumber FROM verificationcodes WHERE codeNumber= ?");
如果您在上述查询中获得结果,则表明该代码已存在于数据库中,您可以重定向到成功。
您当前正在做的是从表中获取所有codeNumber,并且不循环访问它们,而是在比较无法使用的帖子数据。
否则,您将在执行操作时获取所有数据并进行foreach
循环,并将所有值与发布数据进行比较。