PHP:不要给留空的表单字段发送电子邮件

PHP:不要给留空的表单字段发送电子邮件,php,forms,email,Php,Forms,Email,目前,我正在制作一个带有一组非必填字段的在线查询表单 如果一个非强制性的表单字段没有填写,我想让它不通过处理过的电子邮件 比如,;如果有人没有输入他们的电话号码,“电话:$atelephone”组件将无法通过 if ($atelephone != '') { echo "Telephone: ".$atelephone; } 我认为代码中应该有上面提到的东西,尽管我很难把这些点连接起来。任何帮助都将不胜感激。(我希望这是有道理的) Hm,在POST数组中循环,如果字段为空,则不要添加它

目前,我正在制作一个带有一组非必填字段的在线查询表单

如果一个非强制性的表单字段没有填写,我想让它不通过处理过的电子邮件

比如,;如果有人没有输入他们的电话号码,“电话:$atelephone”组件将无法通过

if ($atelephone != '') { 
echo "Telephone: ".$atelephone;  
}
我认为代码中应该有上面提到的东西,尽管我很难把这些点连接起来。任何帮助都将不胜感激。(我希望这是有道理的)


Hm,在POST数组中循环,如果字段为空,则不要添加它

比如:

$acceptedInputs = array('name', 'email', etc.);
$spacesBA = array('message'=>array(1,2)); //Spaces before/after, first is before, second is after.  Default is none.

$emailBits = array();

foreach ($_POST as $name=>$value)
{
    if (!in_array($name, $acceptedInputs)) //Don't want them to submit unknown fields
        continue;
    if (!empty($value))
        $emailBits[] = 
str_repeat("\n",(isset($spacesBA[$name][0])?$spacesBA[$name][0]:0) /* Add before lines */
 . $name . ' : ' . $value . 
str_repeat("\n",(isset($spacesBA[$name][1])?$spacesBA[$name][1]:0)); /*Add after lines */
}
$emailBody = "
===========================================
Please note: this is an email 
generated from the Website.
=========================================== 
";
$emailBody .= implode("\n",$emailBits);
$emailBody .= "

================================ ";

你在正确的轨道上。最后一步是在最终消息中输入字符串:

$_POST['telephone'] ?  
  $telephoneString = "Telephone: ".$_POST['telephone'] ."\n" : 
  $telephoneString = "";
(字符串末尾的
\n
将换行。)

然后,在消息中输出字符串。它将是空的,或者不是

  "foo bar baz
  ===========================================".
  $nameString.
  $emailString.
  $telephoneString.
  $suburbString;
编辑


这可能对单个表单字段更有效。不过,为了美观起见,我更喜欢@mazzzzz的解决方案。

谢谢@mazzzzz上述解决方案确实不错,尽管所讨论的查询表单有200多个字段,因此需要对其进行一点特殊的样式设置。意外按下return。这样我就可以把答案集中在一个标题下,并在适当的地方放置额外的返回,使电子邮件更容易阅读。我想你可以制作另一个数组,每比特返回多少,然后在每个循环中添加多少。Tbh,这是唯一实用的解决方案,我同意我认为@mazzzzz解决方案真的很好。非常感谢您的解决方案。不幸的是,我想我必须生成单独的表单字段。@Brandrally-您可能需要检查代码中的安全性。通常情况下,在任何地方发送原始
post
数据而不先对其进行过滤是个坏主意。过滤什么是一个全新的问题。
  "foo bar baz
  ===========================================".
  $nameString.
  $emailString.
  $telephoneString.
  $suburbString;