我的 PHP 表单在页面 loads/refreshes 时发送空白条目

My PHP form is sending blank entries when the page loads/refreshes

我的 PHP 联系表单工作正常,当用户在字段中输入有效数据并点击提交时,它会向我的电子邮件发送信息,但每次我加载包含以下内容的页面时,它也会向我发送一封空白电子邮件表格。我认为这可能与我的提交条件有关:

提交按钮代码:

       <div class="col-md-12 submit-button">
            <input type="submit" class="btn btn-success btn-send" value="Send message" />
            <div class="success"><?= $success ?></div>
       </div>

Form_process.php发送代码:

 if ($name_error == '' and $email_error == '' and $phone_error == '' ){
  $message_body = '';
  unset($_POST['submit']);
  foreach ($_POST as $key => $value) {
      $message_body .= "$key: $value\n";
  }  
  $to = 'admin@domain.com';
  $subject = 'contact form submitted';
  if(mail($to, $subject, $message_body)){
      $success = "Thank you for contacting us, we will get back to you as soon as possible.";
      $name = $email = $organization = $phone = $message = '';
  }
}

谢谢!

您需要检查表单是否已提交,因此您在加载表单时不会运行代码。

if (isset($_POST{'submit'])) {
  // All the code that processes the form goes here
}

在执行发送电子邮件脚本之前,您必须检查表单是否已提交。

首先在您的提交输入中添加一个名字

<div class="col-md-12 submit-button">
    <input name="submit" type="submit" class="btn btn-success btn-send" value="Send message" />
    <div class="success"><?= $success ?></div>
</div>

然后将您的发送电子邮件代码包装在一个 if 中,检查是否显示了 $_POST['submit']

if (isset($_POST['submit'])) {
  // your send email code
}