PHP:只有在用户点击“发送”后,才发送包含用户填写表格的数据的电子邮件? (数据是一个数组)

时间:2011-10-17 02:57:04

标签: php arrays forms email

我是PHP的新手,一般编程,我还在阅读我的手册。我正在尝试一些练习,并创建一些我自己的简单测试。

我有一个表单,包含一些复选框和选择项。用户填写表单并显示一些输出。这就像一个小游戏,用户选择一些答案,脚本显示一个数字,即他/她的分数。

现在,我希望每次用户完成游戏时都会收到一封电子邮件,并附上所有答案。

用户完成一些复选框并选择项目,因此,所有答案都是数组(所以,我试过$ message_answer2 = $ _POST ['answer2'];它不会起作用。)

所以,我试过了:

$to   = 'myown@mail.com';
$subject = 'New Game '.date("m/d/Y h:m:s");
$message_answer2 = join(', ', $_POST['answer2']);
mail($to, $subject, $message_answer2);

这有两个问题:

  • 出现了一个PHP错误:警告:join()[function.join]:传入的参数无效...

  • 每次重新加载页面时都会发送一封电子邮件(空白电子邮件)。只有在用户点击表单的“发送”按钮后才能发送电子邮件。

如果有人可以帮我解决这个问题,我真的很感激:)

谢谢!

Rosamunda

2 个答案:

答案 0 :(得分:2)

你应该试试这个:

if (isset($POST['answer2'])) {
    $to   = 'myown@mail.com';
    $subject = 'New Game '.date("m/d/Y h:m:s");
    $message_answer2 = join(', ', $_POST['answer2']);
    mail($to, $subject, $message_answer2);
}

我假设当用户提交您将其发布到当前页面的表单时。如果是这种情况,那么当你最初加载页面时,$ _POST ['answer2']中没有数据集,这就是你收到错误然后发送空白消息的原因,因为没有数据要发送。添加一个电子邮件只有在语句发出时才会发送,只有在'answer2'中有数据发布到页面时才会发送。

答案 1 :(得分:2)

join()用于数组。除非您在表单的字段名<input name="answer2[]">上使用了特定于PHP的数组表示法,否则PHP将 NOT 使$_POST['answer2']成为一个数组 - 它只是一个普通的字符串。

如果您的表单符合

<input name="answer2" ...>
<input name="answer2" ...>

然后你仍然只在$ _POST中获得一个字符串值。您必须使用[]表示法告诉PHP它应该创建一个数组并将每个单独的answer2添加到该数组。如果不在数组模式下,PHP将只使用它在表单数据中找到的每个answer2值覆盖$_POST['answer2']