如何防止提交的空白字段显示在电子邮件表单上?

时间:2019-01-13 21:56:11

标签: php html forms email syntax

我有一个HTML表单,提交后会通过PHP Email处理程序。一切正常,除了发送电子邮件时,它显示所有字段,包括空字段。我希望它仅显示填写的字段。

我已经设置了一个IF语句,该语句检查以查看变量!null在电子邮件中显示,如果为null,则不显示。它在一定程度上起作用。它可以防止在电子邮件中显示遇到的第一个为空的字段,但是随后将阻止显示其他有效字段。我相信这是我的语法错误。

<?php
$company_name = $_REQUEST['company_name'];
$contact = $_REQUEST['contact'];
$delivery_date = $_REQUEST['delivery_date'];
$delivery_time = $_REQUEST['delivery_time'];
$delivery_address = $_REQUEST['delivery_address'];
$phone = $_REQUEST['phone'];
$special_instruction = $_REQUEST['special_instruction'];
$email = $_REQUEST['email'];
$payment = $_REQUEST['payment'];

$mail->Body    = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<body>
  <p>
    <strong>Company Name:</strong> <span style="color:red;">'.$company_name.'</span><br />';
    if(!is_null($contact)){echo'<strong>Contact:</strong> <span style="color:red;">'.$contact.'</span><br />';};
    '<strong>Delivery Date:</strong> <span style="color:red;">'.$delivery_date.'</span><br />
    <strong>Delivery Time:</strong> <span style="color:red;">'.$delivery_time.'</span><br />
    <strong>Delivery Address:</strong> <span style="color:red;">'.$delivery_address.'</span><br />
    <strong>Phone:</strong> <span style="color:red;">'.$phone.'</span><br />
    <strong>Special Instruction:</strong> <span style="color:red;">'.$special_instruction.'</span><br />
    <strong>Email:</strong> <span style="color:red;">'.$email.'</span><br />
    <strong>Type of Payment:</strong> <span style="color:red;">'.$payment.'</span><br />
  </p>
</body>
</html>';
?>

有时会(但并非总是)填写“联系人”字段。我试图将PHP设置为仅在字段已提交数据时才显示信息。如果“联系人”字段中没有数据,结果应类似于以下内容:

*一般信息*

公司名称:Bl

交货日期:01/03/2019

交货时间:12:00

收货地址:测试仪

电话:763601789

电子邮件:Test@yahoo.com

付款方式:万事达卡

如果填写“联系人”字段,结果应如下所示:

*一般信息*

公司名称:Bl

联系人:Guy Tester

交货日期:01/03/2019

交货时间:12:00

收货地址:测试仪

电话:763601789

特殊说明:帮助

电子邮件:Test@yahoo.com

付款方式:万事达卡

当前结果如下:

*一般信息*

公司名称:Test

1 个答案:

答案 0 :(得分:1)

您不是在条件语句之后构建字符串。除了使用echo之外,您还需要使用.=运算符将其追加到字符串中。换句话说,请确保您正在将字符串分配并附加到$mail->Body变量中。您可能还想使用!empty($contact)而不是!null($contact)

<?php
$mail->Body = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<body>
  <p>
    <strong>Company Name:</strong> <span style="color:red;">'.$company_name.'</span><br />';
    if (!empty($contact))
    {
        $mail->Body .= '<strong>Contact:</strong> <span style="color:red;">'.$contact.'</span><br />';
    }
    $mail->Body .= '<strong>Delivery Date:</strong> <span style="color:red;">'.$delivery_date.'</span><br />
    <strong>Delivery Time:</strong> <span style="color:red;">'.$delivery_time.'</span><br />
    <strong>Delivery Address:</strong> <span style="color:red;">'.$delivery_address.'</span><br />
    <strong>Phone:</strong> <span style="color:red;">'.$phone.'</span><br />
    <strong>Special Instruction:</strong> <span style="color:red;">'.$special_instruction.'</span><br />
    <strong>Email:</strong> <span style="color:red;">'.$email.'</span><br />
    <strong>Type of Payment:</strong> <span style="color:red;">'.$payment.'</span><br />
  </p>
</body>
</html>';
?>