我是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
答案 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']
。