PHP: Не заполняйте поля формы электронной почты, которые остались пустыми.

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

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

Например; если кто-то не вводит их номер телефона, компонент «Телефон: $ 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'); ?> 

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

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

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

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

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

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

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

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 .= " ================================ ";