странная проблема здесь, моя форма 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([email protected]", $subject, $message, $from);
print '<script type="text/javascript">';
print 'alert("Mail envoyé")';
print '</script>';
}
}
}
?>
Это происходит потому, что вы используете $_REQUEST['action']
После того, как вы отправите форму, ваше скрытое полевое action
станет $_REQUEST['action'];
После отправки формы вы получите $action = $_REQUEST['action'];
быть submit
.
Где вы должны иметь пустое значение для $_REQUEST['action']
чтобы отобразить форму.
Решение:
1) Либо измените, if ($action == "submit")
2) Или назначьте пустое значение поле action
(скрытое)
Попробуйте это так.
Во-первых, вы забыли двойную кавычку только после mail(
которая читается так:
mail([email protected]", $subject, $message, $from);
и необходимо изменить на:
mail("[email protected]", $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("[email protected]", $subject, $message, $from);
print '<script type="text/javascript">';
print 'alert("Mail envoyé")';
print '</script>';
exit;
}
}
?>
enctype="multipart/form-data"
, избавьтесь отenctype="multipart/form-data"
который предназначен для прикрепления / загрузки файлов.