PHP问题:具有“提交”按钮可检测HTML表单和文件上传中的错误

时间:2019-05-27 16:20:57

标签: javascript php html

因此,我需要为比赛创建一个包含个人数据和图像的表单。我正在运行它,但是我需要一个相同的提交按钮来检测上载的文件和输入数据中的错误。

现在,它仅查找上传文件中的错误

我尝试为输入错误添加一个数组,并将其添加到$ fileError === 0 if语句中,但它显示错误

<?php

$firstnameErr = $surnameErr = $address1Err = $emailErr = $phoneErr = $instaErr = $GDPRErr= "";
$ResultERRORS = array("firstnameErr", "surnameErr", "address1Err", "emailErr", "phoneErr", "instaErr", "GDPRErr");
$firstname = $surname = $address1 = $address2 = $email = $phone = $insta = $GDPR = "";

if (isset($_POST['submit'])) {

  if (empty($_POST["firstname"])) {
    $firstnameErr = "Firstname is required";
  } else {
    $firstname = test_input($_POST["firstname"]);
    // check if name only contains letters and whitespace
    if (!preg_match("/^[a-zA-Z ]*$/",$firstname)) {
      $firstnameErr = "Only letters and white space allowed";
    }
  }

  if (empty($_POST["surname"])) {
    $surnameErr = "Surname is required";
  } else {
    $surname = test_input($_POST["surname"]);
    // check if name only contains letters and whitespace
    if (!preg_match("/^[a-zA-Z ]*$/",$surname)) {
      $surnameErr = "Only letters and white space allowed";
    }
  }

  if (empty($_POST["address1"])) {
    $address1Err = "Address is required";
  } else {
    $address1 = test_input($_POST["address1"]);
    // check if name only contains letters and whitespace
    if (!preg_match("/^[a-zA-Z ]*$/",$address1)) {
      $address1Err = "Only letters and white space allowed";
    }
  }

  if (empty($_POST["address2"])) {
      $address2 = "";
    } else {
      $address2 = test_input($_POST["address2"]);
  }

  if (empty($_POST["email"])) {
      $emailErr = "Email is required";
    } else {
      $email = test_input($_POST["email"]);
      // check if e-mail address is well-formed
      if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $emailErr = "Invalid email format";
      }
  }

  if (empty($_POST["phone"])) {
    $phoneErr = "Phone number is required";
  } else {
    $phone = test_input($_POST["phone"]);
    // check if name only contains letters and whitespace
    if (!preg_match("/^[0-9 ]*$/",$phone)) {
      $phoneErr = "Only numbers allowed";
    }
  }

  if (empty($_POST["instagram"])) {
    $instaErr = "Instagram handle is required";
  } else {
    $insta = test_input($_POST["instagram"]);
    // check if name only contains letters and whitespace
    if (!preg_match("/^[a-zA-Z @ . _]*$/",$insta)) {
      $instaErr = "Invalid Instagram username";
    }
  }

  if (empty($_POST["GDPR"])) {
    $GDPRErr = "Box must be checked";
  } else {
    $GDPR = test_input($_POST["GDPR"]);
  }

   $firstname = $_POST['firstname'];
   $surname = $_POST['surname'];
   $address1 = $_POST['address1'];
   $address2 = $_POST['address2'];
   $email = $_POST['email'];
   $phone = $_POST['phone'];
   $insta = $_POST['instagram'];
   $GDPR = $_POST['GDPR'];
   $results = fopen("form_results/results.txt", "a");
   $savestring = nl2br($firstname . " , " . $surname . " , " . $address1 . " , " . $address2 . " , " , " . $country . " , " . $email . " , " . $phone . " , " . $insta . " , " . $GDPR . "\r\n");
   fwrite($results, $savestring);
   fclose($results);

  $file = $_FILES['userfile'];
  $fileName = $_FILES['userfile']['name'];
  $fileTmpName = $_FILES['userfile']['tmp_name'];
  $fileSize = $_FILES['userfile']['size'];
  $fileError = $_FILES['userfile']['error'];
  $fileType = $_FILES['userfile']['type'];

  $fileExt = explode('.', $fileName);
  $fileActualExt = strtolower(end($fileExt));

  $allowed = array('jpg', 'jpeg', 'png', 'pdf');

  if (in_array($fileActualExt, $allowed)) {
    if ($fileError === 0) {
      if ($fileSize >= 2e+6 && $fileSize < 1e+7) {
        $fileNameNew = uniqid('', true).".".$fileActualExt;
        $fileDestination = 'uploads/'.$fileNameNew;
        move_uploaded_file($fileTmpName, $fileDestination);
        header("Location: done.html");
      } else {
        $message = "* Your photo must be bigger than 2MB and less than 10MB!";
      }
    } else {
      $message = "* There is an error! Please try again";
    }
  } else {
    $message = "* Please upload a .jpg, .jpeg, .png or .pdf file";
  }
}

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

?>

<div id="forms">
  <p><span class="error">* required field</span></p>
  <form action "<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST" enctype="multipart/form-data">

    <div id="name">
      <input type="text" name="firstname" placeholder="First Name">
      <span class="error">* <?php echo $firstnameErr;?></span>
      <input type="text" name="surname" placeholder="Surname">
      <span class="error">* <?php echo $surnameErr;?></span>
    </div>

    <br><br><br><br>

    <div id="address">
      <input type="text" name="address1" placeholder="Address Line 1">
      <span class="error">* <?php echo $address1Err;?></span>
      <input type="text" name="address2" placeholder="Address Line 2">
      <span class="error2">*</span>
    </div>

    <br><br><br><br>

    <input type="text" name="email" placeholder="Email">
    <span class="error">* <?php echo $emailErr;?></span>
    <br><br>
    <input type="text" name="phone" placeholder="Phone Number">
    <span class="error">* <?php echo $phoneErr;?></span>
    <br><br>
    <input type="text" name="instagram" placeholder="Instagram Handle">
    <span class="error">* <?php echo $instaErr;?></span>
    <br><br>

    <input type="file" id="file" name="userfile" />
    <br><br>
    <input type="checkbox" name="GDPR" value="GDPR">&nbsp;&nbsp;<span class="GDPR_rule">I certify that I have<br> read and agree to the<br> <a href="" class="tandc">terms & conditions</a>.</span>
    <br>
    <span class="error">* <?php echo $GDPRErr;?></span>
    <br><br>
    <button type="submit" name="submit">SUBMIT</button>
  </form>
</div>

<span class="upload_error"><?php if(isset($message)){echo $message;} ?></span>

我希望上传按钮同时检测$ fileErrors和$ ResultERRORS数组

0 个答案:

没有答案