моя форма отправляет неверную запись, даже если она проверена, как я могу предотвратить это? - PullRequest
0 голосов
/ 16 марта 2020

Используя PHP, проверка в моей форме правильная, и я даже использую заголовок перенаправления, когда форма отправлена ​​правильно, эта часть работает просто отлично, однако, когда форма проверена или показывает ошибки, запись отправляется, когда это не должно, это что-то, что мне нужно добавить в мою базу кода, чтобы исправить эту ошибку, взгляните на мой код ниже ..

<?php
  $e_first = ""; $e_last = ""; $e_email = ""; $success = "";
  if ($_SERVER["REQUEST_METHOD"] == "POST") {
    require_once("config.php");
    require_once("database.php");
    require_once("controller.php");

    $firstname = sanitize($_POST['firstname']);
    $lastname = sanitize($_POST['lastname']);
    $email = sanitize($_POST['email']);
    $submit = sanitize($_POST['submit']);

    if (empty($firstname)) {
      $e_first = "First Name is required";
    } else {
      $firstname;
      if (!preg_match("/^[a-zA-Z ]*$/", $firstname)) {
        $e_first = "Only letters and white space allowed";
      }
    }

    if (empty($lastname)) {
      $e_last = "Last Name is required";
    } else {
      $lastname;
      if (!preg_match("/^[a-zA-Z ]*$/", $lastname)) {
        $e_last = "Only letters and white space allowed";
      }
    }

    if (empty($email)) {
      $e_email = "Email Address is required";
    } else {
      $email;
      if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $e_email = "Invalid Email Address";
      }
    }

    $users = [
      'firstname' => $firstname,
      'lastname' => $lastname,
      'email' => $email
    ];

    $control = new Controller();
    $control->addCustomer($users);

    if (isset($submit)) {
      switch (false) {
        case !empty($firstname) || $firstname == $e_first :
          $success = "";
        break;
        case !empty($lastname) || $lastname == $e_last :
          $success = "";
        break;
        case !empty($email) || $email == $e_email :
          $success = "";
          break;
        default :
          $success = "Thank you $firstname $lastname";
          header("Location: success.php");
          break;
      }
    } 

  }

  function sanitize($data) {
    $data = htmlspecialchars($data);
    $data = stripslashes($data);
    $data = strip_tags($data);
    $data = trim($data);
    return $data;
  }

?>

1 Ответ

0 голосов
/ 16 марта 2020

Бит, где вы добавляете пользователя, должен быть после проверки на ошибки

default :
      $control = new Controller();
      $control->addCustomer($users);
      $success = "Thank you $firstname $lastname";
      header("Location: success.php");
      break;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...