1

我有 HTML 表单,它只通过 PHP 将填写的表单发送到电子邮件。好吧,我需要先将该信息发送到评论页面,让客户检查所有填写的信息,让他们审核并再次提交,然后才将该信息发送到电子邮件。这个怎么做?

这是代码:

<?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_badges, coffee_mug, plastic_bag, paper_bag, candy, moist_towlette, notepad_and_pen, tuck_box, red_tie, cap, red_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 中,您不能在同一个表单上有两个按钮,将表单提交到不同的 URL。所以有两种选择:

  • 更简单:制作两个表单,每个表单都包含所有隐藏字段和一个按钮。每个表单提交到不同的 URL,一个发送到电子邮件,一个返回到表单。
  • 保留一个提交到的表单,比如说电子邮件 URL,但那里的脚本会检查按下的按钮(您必须命名按钮并检查empty($_POST["button_name"]))。然后它检测到“返回”按钮被按下,它将帖子重定向回表单 URL。

在 HTML5 中,您可以让每个按钮提交到不同的 URL。检查标签formaction的属性。input我不知道,如果你负担得起使用 HTML5。检查浏览器中对属性的支持。

当然,你必须修改表单脚本来填写表单数据,通过“返回”按钮提交。例如:

<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 回答