PHP: не отправляйте по электронной почте поля формы, которые оставлены пустыми - PullRequest
1 голос
/ 28 июня 2011

В настоящее время я делаю онлайн-форму запроса с набором полей, которые не являются обязательными.

Если необязательное поле формы не заполнено, я бы хотел, чтобы оно не отображалось в обработанном письме.

Например; если кто-то не вводит свой номер телефона, компонент «Телефон: $ atelephone» не проходит.

if ($atelephone != '') { 
echo "Telephone: ".$atelephone;  
}

Я полагаю, что в коде должно быть что-то вроде выше, хотя я изо всех сил пытаюсь соединить точки. Любая помощь будет принята с благодарностью. (Надеюсь, это имеет смысл).

<?php 

// Base form items

$asender = $HTTP_POST_VARS['name'] ." <". $HTTP_POST_VARS['email'] .">";
$asubject = "Email Enquiry: ".$HTTP_POST_VARS['subject'];
$arecipient = "recipient@websiteaddress.com.au";

/*******************************************************/
// Mail form variables //

$aname = $HTTP_POST_VARS['name'];
$aemail = $HTTP_POST_VARS['email'];
$atelephone = $HTTP_POST_VARS['telephone'];
$asuburb = $HTTP_POST_VARS['suburb'];
$aenquiry = $HTTP_POST_VARS['enquiry'];

mail("$arecipient","$asubject", 
"
===========================================
Please note: this is an email 
generated from the Website.
=========================================== 

Name: $aname
Email: $aemail
Telephone: $atelephone
Suburb: $asuburb

Message:
$aenquiry 

================================ ","FROM:$asender"); 

header('Location: /thank-you.php');

?>

Ответы [ 2 ]

1 голос
/ 28 июня 2011

Вы на правильном пути. Последний шаг - создать строку для ввода в ваше последнее сообщение:

$_POST['telephone'] ?  
  $telephoneString = "Telephone: ".$_POST['telephone'] ."\n" : 
  $telephoneString = "";

(\n в конце строки создает новую строку.)

Затем выведите строку в сообщении. Будет пусто или нет.

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

Редактировать

Это может работать лучше для отдельных полей формы. Однако для элегантности я предпочитаю решение от @ mazzzzzz.

1 голос
/ 28 июня 2011

Хм, цикл по массиву 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 .= "

================================ ";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...