每次“请填写所有必填字段”时,此脚本都会向我显示此消息。

时间:2019-03-20 06:13:03

标签: php

我正在尝试所有操作,但此PHP脚本显示此错误“请填写所有必填字段。”

请帮助我解决该问题。

<?php
session_start();
if (isset($_POST['fullname']) &&  isset($_POST['email']) && isset($_POST['phone'])) {
    $fullname = $_POST['fullname'];
    $email = $_POST['email'];
    $phone = $_POST['phone'];
    $headers = "MIME-Version: 1.0"."\r\n";
    $headers.= "Content-type:text/html;charset=UTF-8"."\r\n";
  $headers.= 'From: <'.$email.'>'."\r\n";
  $mailto = "google@gmail.com";
  $subject = "Web Design & Development Service";
  $msg2send = "Hi $fullname,
  Hi, we have received one fresh query for you.
  Name: $fullname
  Email: $email
  Phone: $phone ";
  $msg2send = nl2br($msg2send);
  if (mail($mailto, $subject, $msg2send, $headers)) {
      echo "Thanks for writing to us. We will get back to you as soon as possible.";
  } else {
      echo "Please fill out all the mandatory fields.";
  }
} else {
    echo "Your enquiry could not be sent for some reason; please try sending us again.";
}
?>

2 个答案:

答案 0 :(得分:1)

您的if else语句的位置不正确。

他们指出了错误的条件。

重新排列的代码:

<?php
session_start();
if (isset($_POST['fullname']) &&  isset($_POST['email']) && isset($_POST['phone'])) {
    $fullname = $_POST['fullname'];
    $email = $_POST['email'];
    $phone = $_POST['phone'];
    $headers = "MIME-Version: 1.0"."\r\n";
    $headers.= "Content-type:text/html;charset=UTF-8"."\r\n";
  $headers.= 'From: <'.$email.'>'."\r\n";
  $mailto = "google@gmail.com";
  $subject = "Web Design & Development Service";
  $msg2send = "Hi $fullname,
  Hi, we have received one fresh query for you.
  Name: $fullname
  Email: $email
  Phone: $phone ";
  $msg2send = nl2br($msg2send);
  if (mail($email, $subject, $msg2send, $headers)) {
      echo "Thanks for writing to us. We will get back to you as soon as possible.";
  } else {
    // #1: Swipe with #2
      echo "Your enquiry could not be sent for some reason; please try sending us again."; // Flip this with #2
  }
} else {
  echo "Please fill out all the mandatory fields."; // #2
}

?>

答案 1 :(得分:1)

太多的嵌套IF语句是一个不好的做法,因为它很难调试。相反,您应该将它们分解为一些小语句

例如:

<?php
session_start();
if !(isset($_POST['fullname']) ||  isset($_POST['email']) || isset($_POST['phone'])) {
    echo "Your enquiry could not be sent for some reason; please try sending us again.";
    exit();
}

$fullname = $_POST['fullname'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$headers = "MIME-Version: 1.0"."\r\n";
$headers.= "Content-type:text/html;charset=UTF-8"."\r\n";
$headers.= 'From: <'.$email.'>'."\r\n";
$mailto = "google@gmail.com";
$subject = "Web Design & Development Service";
$msg2send = "Hi $fullname,
Hi, we have received one fresh query for you.
Name: $fullname
Email: $email
Phone: $phone ";
$msg2send = nl2br($msg2send);

if (mail($mailto, $subject, $msg2send, $headers)) {
  echo "Thanks for writing to us. We will get back to you as soon as possible.";
} else {
  echo "Please fill out all the mandatory fields.";
}
?>

现在,代码变得更加清晰,您可以进行追溯。似乎您的代码在mail函数处出错,因此返回False,然后显示消息。

相关问题