отправлять только заполненные поля. если пусто, то не отправляйте по электронной почте. php форма для отправки по электронной почте

0

У меня есть эта простая форма для отправки по электронной почте на php. Хорошая вещь об этой форме в send php-код заключается в том, что мне не нужно записывать все имена полей. Например, мне не нужно писать это:

$msg .= "$_POST[ContactName]     Contact Name:     ContactName\n"

В моем коде все, что мне нужно написать, это:

foreach ($_POST as $Field=>$Value) { 
$body .= "$Field: $Value\n";

Форма в настоящее время работает отлично. В настоящее время он отправляет это:

ContactName: name here
BusinessName: business name here
EmailAddress: [email protected]
Email_Confirmation: 
PhoneNumber: 714-555-5555

Однако я хотел бы, чтобы это произошло: если поле осталось пустым или веб-пользователь не заполняет его определенным полем поля, то форма НЕ должна отправлять это поле. Например: веб-пользователь решает НЕ заполнять ContactName и или BusinessName. Поэтому форма должна отправлять только этот формат:

EmailAddress: [email protected]
Email_Confirmation: 
PhoneNumber: 714-555-5555

Заметил не упоминание ContactName: и BusinessName:

Пожалуйста помоги! Буду премного благодарен. -Michelle Ха.

Вот код отправки php:

if the Email_Confirmation field is empty
if(isset($_POST['Email_Confirmation']) && $_POST['Email_Confirmation'] == ''){

    // put your email address here
    $youremail = '[email protected]';

    // prepare a "pretty" version of the message
    $body .= "Thank you for your request. We will get back with you soon.";
    $body .= "\n";
    $body .= "\n";
    foreach ($_POST as $Field=>$Value) { 
    $body .= "$Field: $Value\n"; 
    $body .= "\n";
    }

    $CCUser = $_POST['EmailAddress'];

    // Use the submitters email if they supplied one
    // (and it isn't trying to hack your form).
    // Otherwise send from your email address.
    if( $_POST['EmailAddress'] && !preg_match( "/[\r\n]/", $_POST['EmailAddress']) ) {
      $headers = "From: $_POST[EmailAddress]";
    } else {
      $headers = "From: $youremail";
    }

    // finally, send the message
    mail($youremail, 'subject line here', $body, $headers, $CCUser );

}

// otherwise, let the spammer think that they got their message through
Теги:
forms
email
post

2 ответа

3
Лучший ответ
foreach ($_POST as $Field=>$Value) { 
if($Value != ''){
$body .= "$Field: $Value\n";
}
}
  • 0
    Этот работает отлично! Спасибо
  • 0
    Теперь, когда ваш код работает, отлично. Теперь у меня новая проблема. Пожалуйста, посмотрите здесь: test4.bycustomdesign.com/order-form.shtml Заметил, что у меня есть несколько выпадающих списков меню, чтобы выбрать другой размер и т. Д. Первоначальный выбор всегда был «Выбрать». Когда я сделал тестовую отправку, он отправляет все поля. Как изменить код формы, если пользователь ничего не выбрал или по умолчанию «Выбрать» он НЕ отправит на мою электронную почту. Форма отправит, но в электронном письме я не получу никаких полей с «Выбрать». Вот мой код: foreach ($ _POST как $ Field => $ Value) {if ($ Value! = '') {$ Body. = "Поле $: $ Значение \ n";
1

Добавьте проверку для вас

if(empty($Value)) continue;

И измените значение по умолчанию в вашей форме на заполнители

Ещё вопросы

Сообщество Overcoder
Наверх
Меню