HTML-форма исчезает после отправки сообщения об ошибке или по электронной почте (PHP)

0

странная проблема здесь, моя форма 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>'; 
        } 
    }   
    }
?> 
  • 0
    Во- enctype="multipart/form-data" , избавьтесь от enctype="multipart/form-data" который предназначен для прикрепления / загрузки файлов.
  • 0
    Ребята, я сделал отредактированный код, поэтому добавил двойные кавычки !!!
Показать ещё 3 комментария
Теги:
forms
email

2 ответа

0

Это происходит потому, что вы используете $_REQUEST['action']

После того, как вы отправите форму, ваше скрытое полевое action станет $_REQUEST['action'];

После отправки формы вы получите $action = $_REQUEST['action']; быть submit.

Где вы должны иметь пустое значение для $_REQUEST['action'] чтобы отобразить форму.

Решение:

1) Либо измените, if ($action == "submit")

2) Или назначьте пустое значение поле action (скрытое)

0

Попробуйте это так.

Во-первых, вы забыли двойную кавычку только после 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;
    } 
}   
?>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню