这里有一个奇怪的问题,当我点击发送按钮时,无论成功与否,我的html表单都会从页面中消失。
我会显示一个警告框,指示电子邮件是否已发送。
这是代码
<?php
$action = $_REQUEST['action'];
if ($action == "") /* display the contact form */ {
?>
<form action="" method="POST" enctype="multipart/form-data">
<input type="hidden" name="action" value="submit">
<input class="champTextFormulaire" placeholder="Votre Nom" name="name" type="text" value="" size="30"/><br>
<input class="champTextFormulaire" placeholder="Votre email" name="email" type="text" value="" size="30"/><br>
<textarea id="champMessage" placeholder="Votre Message..." name="message" rows="7" cols="30"></textarea><br>
<input class="btnEnvoiFormulaire" type="submit" value="Envoi"/>
</form>
<?php
} else /* send the submitted data */ {
$name = $_REQUEST['name'];
$email = $_REQUEST['email'];
$message = $_REQUEST['message'];
if (($name == "") || ($email == "") || ($message == "")) {
print '<script type="text/javascript">';
print 'alert("Veuillez remplir tout les champs")';
print '</script>';
} else {
$from = "From: $name<$email>\r\nReturn-path: $email";
$subject = "Message sent using your contact form";
mail(desiletsmathieu@gmail.com", $subject, $message, $from);
print '<script type="text/javascript">';
print 'alert("Mail envoyé")';
print '</script>';
}
}
}
?>
答案 0 :(得分:0)
以这种方式试试。
首先,你忘记了mail(
之后的双引号,如下所示:
mail(desiletsmathieu@gmail.com", $subject, $message, $from);
需要更改为:
mail("desiletsmathieu@gmail.com", $subject, $message, $from);
Plus enctype="multipart/form-data"
用于文件附件/上传,因此您不需要。
我也删除了这一行,不再需要:
<input type="hidden" name="action" value="submit">
注意:我在您的提交按钮中添加了一个名称,以便为其提供额外条件。此外,您基本上已经设置了条件,只需要重新设计/重新考虑并使用更少的代码来实现相同的结果。
<form action="" method="POST">
<input class="champTextFormulaire" placeholder="Votre Nom" name="name" type="text" value="" size="30"/><br>
<input class="champTextFormulaire" placeholder="Votre email" name="email" type="text" value="" size="30"/><br>
<textarea id="champMessage" placeholder="Votre Message..." name="message" rows="7" cols="30"></textarea><br>
<input class="btnEnvoiFormulaire" type="submit" name="submit" value="Envoi"/>
</form>
<?php
$name=$_REQUEST['name'];
$email=$_REQUEST['email'];
$message=$_REQUEST['message'];
if (isset($_POST['submit'])) {
if (($name=="")||($email=="")||($message==""))
{
print '<script type="text/javascript">';
print 'alert("Veuillez remplir tout les champs")';
print '</script>';
exit;
}
else
{
$from="From: $name<$email>\r\nReturn-path: $email";
$subject="Message sent using your contact form";
mail("desiletsmathieu@gmail.com", $subject, $message, $from);
print '<script type="text/javascript">';
print 'alert("Mail envoyé")';
print '</script>';
exit;
}
}
?>
答案 1 :(得分:0)
这是因为您使用$_REQUEST['action']
提交表单后,您隐藏的字段action
变为$_REQUEST['action'];
在您提交表单后,您会$action = $_REQUEST['action'];
成为submit
。
您应该在$_REQUEST['action']
显示表单的空白值。
解决方案:
1)修改if ($action == "submit")
2)或者,将空白值分配给action
(隐藏)字段