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@email.com
Email_Confirmation: 
PhoneNumber: 714-555-5555

ただし、これが発生することを願っています。フィールドが空のままであるか、Web ユーザーが特定のフィールド ボックスに入力しない場合、フォームはこのフィールドを送信しないでください。例: Web ユーザーは、ContactName または BusinessName を入力しないことにしました。したがって、フォームは次の形式のみを送信する必要があります。

EmailAddress: email@email.com
Email_Confirmation: 
PhoneNumber: 714-555-5555

ContactName: と BusinessName: が言及されていないことに気付きました。

助けてください!私はそれをお願い申し上げます。-ミシェル・ハ。

php送信コードは次のとおりです。

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

    // put your email address here
    $youremail = 'bomandty@gmail.com';

    // 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
4

2 に答える 2

3
foreach ($_POST as $Field=>$Value) { 
if($Value != ''){
$body .= "$Field: $Value\n";
}
}
于 2013-09-24T17:07:15.030 に答える
1

foreach にチェックを追加

if(empty($Value)) continue;

フォームのデフォルト値をプレースホルダーに変更します

于 2013-09-24T17:00:50.000 に答える