PHP表单找不到空字段

问题描述 投票:1回答:4

我一直在修改这个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 = "[email protected]";
      mail($mailTo);
      $emailErr = "Email Send";
    }
 }
 ?>
php forms email send
4个回答
1
投票
if (empty($name) || empty($email) || empty($message)) 
 {
     $emailErr = "All fields are mendatory";
 }

你可以使用php函数empty或is_null


0
投票

在这种情况下,isset()将始终返回true,因为已设置变量(为空字符串)。要检查变量是否为空,您应该使用$email$message所做的操作:

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

要演示,您只需运行以下命令:

$a = ""
var_dump(!isset($a)); // false
var_dump($a == ""); // true

0
投票

请试试这个,

我在我的本地系统中检查它的工作正常,错误和成功消息是根据您的要求

<?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 = "[email protected]";
      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
投票

表单提交后,如果字段名称存在,则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 = "[email protected]";
    mail($mailTo);
    $emailErr = "Email Send";
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.