如何将用户输入与数据库值匹配?

时间:2020-04-11 07:52:35

标签: php mysql mysqli

我正在创建一个验证码系统,用户会收到一封包含代码的电子邮件,他们会访问我的网站,输入该代码,如果代码与数据库表“ 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(); 
}

1 个答案:

答案 0 :(得分:-1)

您需要按以下方式更改代码:

$conn->prepare("SELECT codeNumber FROM verificationcodes WHERE codeNumber= ?");

如果您在上述查询中获得结果,则表明该代码已存在于数据库中,您可以重定向到成功。

您当前正在做的是从表中获取所有codeNumber,并且不循环访问它们,而是在比较无法使用的帖子数据。

否则,您将在执行操作时获取所有数据并进行foreach循环,并将所有值与发布数据进行比较。