1

記入済みのフォームのみを PHP 経由で電子メールに送信する HTML フォームがあります。最初にその情報をレビュー ページに送信して、顧客がすべての入力情報を確認できるようにし、レビューして再度送信してもらい、その情報をメールに送信する必要があります。これを行う方法?

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

<?php
// Please specify your Mail Server - Example: mail.yourdomain.com.
ini_set("SMTP", "mail.amaderica.com");
// Please specify an SMTP Number 25 and 8889 are valid SMTP Ports.
ini_set("smtp_port", "25");
// Please specify the return address to use
ini_set('sendmail_from', 'ravila@art.com');

$name = $_POST['Attention_To'];

// Set parameters of the email
$to = "ravila@art.com";
$subject = "Art Promo Items Ordered";
$from = " nostrowski@art.com";
$headers = "From: $from";

$message =
    "Order has been placed. Attn to: $name .\n" .
    "Items:\n";
foreach ($_POST as $fieldName => $fieldValue)
{
    if (!empty($fieldValue))
        $message .= "   $fieldName: $fieldValue\n";
}

// Mail function that sends the email.
mail($to, $subject, $message, $headers);

header('Location: thank-you.html');
?>

私のフォームsilver_name_badgescoffee_mugフィールドplastic_bagのいくつかは、、、、、、、、、、、、などです。paper_bagcandymoist_towlettenotepad_and_pentuck_boxred_tiecapred_lanyard

4

1 に答える 1

3

レビューページ

送信ページ (= 質問のコード) ではなく、レビュー ページにフォームを送信します。(すべてのデータを含む) レビュー ページ自体をレンダリングすることとは別に、非表示のフォーム フィールドにデータのコピーを置きます。送信ページにデータを (実質的には元のフォームと同じ形式で) 送信する電子メール送信ボタンを追加します。

例:

<dl>
<?
if (!empty($_POST['plastic_bag']))
{
?>
    <dt>Plastic bag:</dt>
    <dd><?=htmlspecialchars($_POST['plastic_bag'])?></dd>
<?
}
if (!empty($_POST['paper_bag']))
{
?>
    <dt>Paper bag:</dt>
    <dd><?=htmlspecialchars($_POST['paper_bag'])?></dd>
<?
}
// and so forth for all fields 
?>
</dl>

<form action="your_mailing_script_from_your_question.php" method="post">
<?
foreach ($_POST as $key => $value)
{
    echo "<input type=\"hidden\" name=\"".htmlspecialchars($key).
         "\" value=\"".htmlspecialchars($value)."\"/>\n";
}
?>
<input type="submit" value="Email this"/>
</form>

"戻るボタン

HTML4 では、同じフォームの 2 つのボタンからフォームを別の URL に送信することはできません。したがって、次の 2 つのオプションがあります。

  • より簡単: それぞれにすべての非表示フィールドを含む 2 つのフォームと 1 つのボタンを作成します。各フォームは、異なる URL に送信されます。1 つは電子メールに送信され、もう 1 つはフォームに戻されます。
  • 送信先の 1 つのフォーム、たとえば電子メールの URL を保持しますが、そこにあるスクリプトはどのボタンが押されたかをチェックします (ボタンに名前を付けてチェックする必要がありますempty($_POST["button_name"]))。次に、「戻る」ボタンが押されたことを検出すると、投稿をフォーム URL にリダイレクトします。

HTML5 では、すべてのボタンを別の URL に送信することができます。タグformactionの属性を確認してください。inputHTML5 を使用する余裕があるかどうかはわかりません。ブラウザでの属性のサポートを確認してください。

もちろん、「戻る」ボタンで送信されたデータをフォームに入力するには、フォーム スクリプトを変更する必要があります。例えば:

<p>
<label for="plastic_bag">Plastic bag:</label>
<?
$value =
    !empty($_POST["plastic_bag"]) ? htmlspecialchars($_POST["plastic_bag"]) : NULL;
?>
<input name="plastic_bag" id="plastic_bag" value="<?=$value?>"/>
</p>
于 2013-04-17T21:50:30.887 に答える