【问题标题】:Error is throwing even though the form is filled in?即使填写了表格,也会抛出错误?
【发布时间】:2021-10-21 16:59:50
【问题描述】:

我正在为班级创建一个网络应用程序。登录页面工作正常。我有一个带有 action="login.php" method="post" 的表单。 login.php页面有一个php脚本,基本上是说如果表单没有填写,则退出错误。

我对 createaccount.php 页面使用了相同的脚本,即使填写了表单,它也会退出并显示错误,而不是继续执行脚本的其余部分?

我觉得这是一件很明显的事情,我错过了,但我花了太多时间在这个大声笑上。

表单 HTML

    <form class="form form_hidden" id="createAccount" action="createaccount.php" method="post">
      <h1 class="form_title">Create Account</h1>

      <div class="form_text error_message"></div>

      <input class="" type="text" placeholder="First Name" name="fname" id="fname" required />
        <div class="form_text input_error_message"></div>
      <input class="" type="text" placeholder="Last Name" name="lname" id="lname" required />
        <div class="form_text input_error_message"></div>
      <input class="" type="email" placeholder="Email Address" name="email" id="email" required />
        <div class="form_text input_error_message"></div>
      <input class="" type="tel" placeholder="(123) 456-7890" name="mobile_number" id="mobile_number" required />
        <div class="form_text input_error_message"></div>
      <input class="" type="password" placeholder="Password" name="password" id="password" required />
        <div class="form_text input_error_message"></div>
      <input class="" type="password" placeholder="Confirm Password" name="confirm_password" id="confirm_password" required />
        <div class="form_text input_error_message"></div>

      <button type="submit">Continue</button>

      <p class="form_text">
        Already have an account? <a href="./" id="linkLogin">Sign in!</a>
      </p>
    </form> 

PHP 脚本

  session_start();

  require_once "config.php";

  // file needs to be accessed via form submission
  if (!isset($_POST['fname'], $_POST['lname'], $_POST['email'], $_POST['mobile_number'], $_POST['password'], $_POST['confirm_password'])) {
    exit ('Please fill in all fields.');
  }

  // sql statement
  if ($stmt = $db->prepare('INSERT INTO accounts (fname, lname, email, mobile_number, password) VALUES (?, ?, ?, ?, ?)')) {

    mysqli_stmt_bind_param($stmt, "ss", $param_email, $param_password, $param_fname, $param_lname, $param_mobile_number);

    // set parameters
    $param_email = $email;
    $param_password = password_hash($password, PASSWORD_DEFAULT);
    $param_fname = $fname;
    $param_lname = $lname;
    $param_mobile_number = $mobile_number;

    if(mysqli_stmt_execute($stmt)) {
      // redirect to login page
      header ("Location: index.php");
    } else {
      echo "Oops! Something went wrong! Please try again later.";
    }
  }

  mysqli_stmt_close($stmt);
*/

?>

【问题讨论】:

  • 不是您的问题,但您可能需要if(empty( 而不是if(!isset(

标签: php forms


【解决方案1】:

尝试像这样使用empty()

if(!(!empty($_POST['fname']) && !empty($_POST['lname']) && !empty($_POST['email']) && !empty($_POST['mobile_number']) && !empty($_POST['password']) && !empty($_POST['confirm_password']))){{
exit ('Please fill in all fields.');
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 2018-07-18
    • 1970-01-01
    相关资源
    最近更新 更多