файл должен обрабатывать сообщения обо всех ошибках - PullRequest
0 голосов
/ 01 октября 2018

Я довольно новичок в PHP.У меня есть задание, которое требует от меня сделать два отдельных файла.На вызванном input.html и другом handle.php.

В файле input.html есть for, который получит пользовательский ввод и затем отправит его в файл handle.php.

Input.html должен выглядеть как

enter image description here

, и если все поля заполнены, то я должен отобразить это

enter image description here

Сложность, с которой я столкнулся, связана с требуемым иском.Если в полях нет текста или радио не проверено, то оно должно предупреждать пользователей, но со мной оно продолжает отправлять их в файл PHP и отображать ошибку.

Мой код для input.html это

<!doctype html>
<html lang="en">

<head>
<title> Feedback Form </title>
<style>
.error {color: #FF0000;}
</style>
</head>

<body>

<?php
// define variables and set to empty values
$nameErr = $emailErr = $responseErr = $commentErr = "";
$name = $email = $response = $comment = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (empty($_POST["name"])) {
    $nameErr = "Name is required";
  } else {
    $name = test_input($_POST["name"]);
    //Check if name only contains letters and whitespace
    if (!preg_match("/^[a-zA-Z ]*$/",$name)){
        $nameErr = "Only letters and white space allowed";
    }
  }

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

  if (empty($_POST["response"])) {
    $responseErr = "Response is required";
  } else {
    $response = test_input($_POST["response"]);
  }

  if (empty($_POST["comment"])) {
    $commentErr = "Comment is required";
  } else {
    $comment = test_input($_POST["comment"]);
  }

}

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


<p>Please complete this form to submit your feedback:</p>

<p><span class="error">* required field</span></p>

<!-- Start of the form -->
<form method="post" action="handle.php">

Name:   <select name="prefix">
            <option>Mr. </option>
            <option>Mrs. </option>
            <option>Ms. </option>
        </select> <input type="text" name="name">
        <span class="error">* <?php echo $nameErr;?></span>
        <br><br>

Email Address: <input type="text" name="email">
<span class="error">* <?php echo $emailErr;?></span>
<br><br>

Response: This is...
    <input type="radio" name="response" value="excellent">excellent
    <input type="radio" name="response" value="okay">okay
    <input type="radio" name="response" value="boring">boring
    <span class="error">* <?php echo $responseErr;?></span>
    <br><br>

Comments: <textarea name="comment" rows="5" cols="40"></textarea>
<span class="error">* <?php echo $commentErr;?></span>
<br><br>

<input type="submit" value="Send My Feedback">
</form>
<!-- End of the form -->






</body>

</html>



и мой код для handle.php равен

<html>
<head></head>
<body>

Thank you, <?php echo $_POST["prefix"] ?> <?php echo $_POST["name"]; ?> for your comment.<br><br>
You stated that you found this example to be '<?php echo $_POST["response"]; ?>'<br>
and added: <br>
'<?php echo $_POST['comment'];?>'<br>


</body>
</html>

Поэтому, когда я оставляю все поля пустыми вместо того, чтобы предупредить меня о том, что они пустые, я получаю это
enter image description here
Я пытался использовать w3shool какнаправляющая линия, но это не сработало.Я был бы очень признателен за помощь и благодарю вас за все, что занимает их время, чтобы попытаться помочь мне.:)

1 Ответ

0 голосов
/ 01 октября 2018

Вы можете использовать required для решения вашей проблемы.required останавливает отправку form, если обязательное поле пусто или не выбрано.

<form method="post" action="handle.php">

    Name:
    <select name="prefix">
        <option>Mr. </option>
        <option>Mrs. </option>
        <option>Ms. </option>
    </select>
    <input type="text" name="name" required>
    <span class="error">* <?php echo $nameErr;?></span>
    <br>
    <br> Email Address:
    <input type="email" name="email" required>
    <span class="error">* <?php echo $emailErr;?></span>
    <br>
    <br> Response: This is...
    <input type="radio" name="response" value="excellent" required>excellent
    <input type="radio" name="response" value="okay" required>okay
    <input type="radio" name="response" value="boring" required>boring
    <span class="error">* <?php echo $responseErr;?></span>
    <br>
    <br> Comments:
    <textarea name="comment" rows="5" cols="40" required></textarea>
    <span class="error">* <?php echo $commentErr;?></span>
    <br>
    <br>

    <input type="submit" value="Send My Feedback">
</form>

Я также рекомендую использовать «email» в качестве типа для поля ввода электронной почты.Это позволит убедиться, что входные данные имеют правильный формат электронной почты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...