PHP表单:如果值为空,如何不发送输入名称?

时间:2015-04-17 16:24:43

标签: php forms email

这个问题已经编辑,因为我在这里找到了解决方案: Remove empty fields in an array after foreach in PHP

感谢您的所有回复。如果没有你的答案我就找不到了!

............................................

我有一个简单的PHP联系表单。如果输入文本字段的“值”为空,是否可以不发送输入文本字段的“名称”?

例如我有:

<form action="{form-action}" method="post">        
<label for="Name">{Name}</label>
<input type="text" name="Name" id="Name" maxlength="100"/>

<label for="Optional">{Optional}</label>
<input type="text" name="Optional" id="Optional" maxlength="100"/>

<input type="submit" value="submit" />

</form>

PHP:

if (array($_POST)) {
foreach ($_POST as $key => $value) {
if ($key != 'send') {
$mail .= "<span>$key</span><span>$value</span>";
}
}

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:0)

只需做一个简单的检查:

    if (is_array($_POST)) {
        foreach ($_POST as $key => $value) {
            if ($key != 'send' && ($key == 'Name' && trim($value) != '')) {
                $mail_body .= "<span>$key</span><span>$value</span>";
            }
        }
    }

答案 1 :(得分:0)

试试这个:

<?php

if (!isset ($_POST['send']))
{
   #Form has not been sent yet
   #Create contact form
   // ....  
} 
elseif ($_POST['send'] == 1) 
{
   #Form has been sent
   #Check user input
   $noerrors = true;
   $msg = '';

   foreach($_POST AS $key => $value)
   {
      $$key = is_string($value) ? trim($value) : $value;
      if ($key != 'send')
      {
         $mail_body .= "<span>$key</span><span>$value</span>";
      }
   }
   if (empty($Name))
   {
       $noerrors = false;
       $msg .= "Please input Name";
   }
   if ($noerrors == false) 
   {
       #Errors have been found
       echo $msg;
   } 
   else 
   {
      #No errors, send mail
      #Get mailer from settings
      //...

      #Display message after mail is sent
      echo "Thank you!";
    }
}
?>

答案 2 :(得分:0)

不,不可能这样做。我能想到的最合理的解决方案是使用if(empty(trim($name)){ // do something }但是从你的代码中,我猜你可以使用javascript来设置隐藏字段的值,如果这是你的一个选项,或者你可以改变你的逻辑