PHP форма не находит пустое поле - PullRequest
0 голосов
/ 04 октября 2018

Я пытался перевернуть эту форму php вверх ногами, но я не понимаю, почему сообщение об ошибке не отображается, и форма всегда отправляет электронное письмо, даже если все поля пусты.вот мой код:

<form name="contactform" method="post" action="">
  <input type="text" data-placeholder="<?php echo $name; ?>"name="name">
  <input type="text" data-placeholder="<?php echo $email; ?>"name="email">
  <textarea data-placeholder="<?php echo $message; ?>" name="message" rows="10"></textarea>
  <input type="submit" name="submit" class="btn btn-footer" value="ENVOYER" id="btnContact">
  <p class="text desktop"><?php echo $emailErr; ?></p>
</form>

<?php
  if(isset($_POST['submit'])) {
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $emailErr = "";

    if (!isset($name) || $email=="" || $message=="" ) {
      $emailErr = "All fields are mendatory";
    } else {
      $mailTo = "test@gmail.com";
      mail($mailTo);
      $emailErr = "Email Send";
    }
 }
 ?>

Ответы [ 4 ]

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

Пожалуйста, попробуйте это,

Я проверяю это в моей локальной системе, оно работает нормально, сообщение об ошибке и успех приходит в соответствии с вашим требованием

<?php
  if(isset($_POST['submit'])) {
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $emailErr = "";

    if (!isset($name) || $email=="" || $message=="" ) {
      $emailErr = "All fields are mendatory";
    } else {
      $mailTo = "test@gmail.com";
      mail($mailTo);
      $emailErr = "Email Send";
    }
 }
 ?>
 <form name="contactform" method="post" action="">
  <input type="text" data-placeholder="<?php echo $name; ?>"name="name">
  <input type="text" data-placeholder="<?php echo $email; ?>"name="email">
  <textarea data-placeholder="<?php echo $message; ?>" name="message" rows="10"></textarea>
  <input type="submit" name="submit" class="btn btn-footer" value="ENVOYER" id="btnContact">
  <p class="text desktop"><?php echo $emailErr; ?></p>
</form>

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

После отправки формы, если имя поля существует, isset() вернет true.Но если вы проверите пустое значение для любого поля, вы можете использовать empty($fieldname) или $fieldname == "" или $fieldname == NULL.

Попробуйте это:

if(isset($_POST['submit'])) {
  $name = $_POST['name'];
  $email = $_POST['email'];
  $message = $_POST['message'];
  $emailErr = "";

  if (empty($name) || empty($email) || empty($message) ) {
    $emailErr = "All fields are mendatory";
  } else {
    $mailTo = "test@gmail.com";
    mail($mailTo);
    $emailErr = "Email Send";
  }
}
0 голосов
/ 04 октября 2018
if (empty($name) || empty($email) || empty($message)) 
 {
     $emailErr = "All fields are mendatory";
 }

Вы можете использовать пустую функцию php или is_null

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

isset() всегда будет возвращать true в этом случае, потому что переменная была установлена ​​(в пустую строку).Чтобы проверить, является ли переменная пустой, вы должны использовать то, что вы сделали с $email и $message:

if ( $name == "" || $email == "" || $message == "" ) {

Чтобы продемонстрировать, вы можете просто выполнить следующее:

$a = ""
var_dump(!isset($a)); // false
var_dump($a == ""); // true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...