1 / 1 / 0
Регистрация: 14.02.2012
Сообщений: 22

Как можно обнулить форму после отправки?

22.03.2012, 22:09. Показов 17812. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!

Есть форма ввода данных с аттачем в ПХП-файле:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
......
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" id="formID" class="formular" name="formular">
<div><input type="text" size="50" name="name" id="name" placeholder="Имя:" class="validate[required,length[0,100]] text-input" /></div>
<div><input type="email" size="50" name="email" id="email" placeholder="@" class="validate[required,custom[email]] text-input" /></div>
<div><input type="subject" size="50" name="subject" id="subject" placeholder="Тема:" class="validate[required,length[0,40]] text-input" /></div>
     <input type="text" id="fileName" class="file_input_textbox" placeholder="Файла нет" readonly />
<div class="file_input_div">
     <input type="button" value="Прикрепить" class="file_input_button" />
     <input type="file" name="file"  class="file_input_hidden" onchange="javascript: document.getElementById('fileName').value = this.value" />
</div>
<div><textarea rows="5" cols="50" name="mess" id="mess" placeholder="Сообщение:" class="validate[required,length[6,300]]"></textarea></div>
     <input type="submit" class="button1" value="Отправить" name="submit" />
     <input type="reset" class="button2" name="button2" id="button2" value="Отменить" />
</form> 
......
и в этом же файле( вверху ) скрипт отправки письма:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php
                
if(isset($_POST['submit'])) { /***---Если форма отправлена---***/
    function send_mail()
        { $name = htmlspecialchars($_POST['name']); }
        { $subject = htmlspecialchars($_POST['subject']); }
        { $email = htmlspecialchars($_POST['email']); }
        $style   = 'font-family:Verdana, Arial, Helvetica, sans-serif; font-size : 13px; color:#474747;padding:6px;border-bottom:1px solid #cccccc;' ;
        $style2  = 'font-family:Verdana, Arial, Helvetica, sans-serif; font-size : 13px; color:#474747;padding:10px;border-bottom:1px solid #cccccc;' ;
        $message = 
            "<table cellspacing=0 cellpadding=0 border=0 >
                <tr><td valign=top style='{$style};width:33%;border-right:1px solid #cccccc;'><b>Имя пославшего:    </b> </td> <td valign=top style='{$style};'>" .$_POST['name']. "</td></tr> 
                <tr><td valign=top style='{$style};width:33%;border-right:1px solid #cccccc;'><b>Электронный адрес: </b> </td> <td valign=top style='{$style};'>" .$_POST['email']. "</td></tr> 
                <tr><td valign=top style='{$style};width:33%;border-right:1px solid #cccccc;'><b>Тема:              </b> </td> <td valign=top style='{$style};'>" .$_POST['subject']. "</td></tr>
                <tr><td valign=top style='{$style};width:33%;border-right:1px solid #cccccc;'><b>Сообщение:        </b> </td> <td valign=top style='{$style2};width:600px; line-height: 27px;'>" .$_POST['mess']. "</td></tr>
            </table><br>";
    include "class.phpmailer.php";// подключаем класс
    if(empty($_POST['name'])||empty($_POST['email'])||empty($_POST['subject']))/***--------Do Validations---------***/
        { $errors .= "\n Name, Email, Subject are required fields. "; }
    if(IsInjected($visitor_email))
        { $errors .= "\n Bad email value!"; }
                        //send the email 
    if(empty($errors))
        {
        $mail = new PHPMailer();
        $mail->From = $_POST['email'];
        $mail->FromName = $_POST['name'];
        $mail->AddAddress('deeand7@gmail.com');
        $mail->IsHTML(true);
        $mail->Subject =  $_POST['subject']." | Письмо пришло с сайта БЛА-БЛА.РУ";
        if(isset($_FILES['file']))
        { if($_FILES['file']['error'] == 0)
        { $mail->AddAttachment($_FILES['file']['tmp_name'],$_FILES['file']['name']); }
        }
        $mail->Body = $message;
        if (!@$mail->Send()) die ('Mailer Error: '.$mail->ErrorInfo);
        {
        echo "<script language='JavaScript'>alert('Спасибо ".$_POST['name']." за использование контактной формы! Ваш email был отправлен и я свяжусь с Вами в кратчайшие сроки.')</script>";
        }
        if (!empty($_POST['submit'])) send_mail();
    }}
    
    function IsInjected($str){
        $injections = array('(\n+)','(\r+)','(\t+)','(%0A+)','(%0D+)','(%08+)','(%09+)');
        $inject = join('|', $injections); $inject = "/$inject/i";
        if(preg_match($inject,$str)){ return true; }
        else{ return false; } }
?>
......
В общем, проблема заключается в том, что после отправки формы, при обновлении страницы, письмо повторно отправляется.
Не могу разобраться, как сделать обнуление формы и как применить GET-редирект.

Может кто поделится дельным советом?

Спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.03.2012, 22:09
Ответы с готовыми решениями:

Как очистить форму после отправки?
Всем доброго дня и приятных выходных. Ситуация следующая: пишу простую форму с отправкой данных на почту. Проблема заключается в том,...

Скрыть форму после отправки
Привет всем! Подскажите пожалуйста что нужно изменить в этом коде чтобы после отправки форма скрывалась? Сейчас после отправки...

Скрыть форму после отправки
Помогите пожалуйста... никак не дойду до решения того как скрыть форму после отправки &lt;!DOCTYPE html&gt; &lt;html...

16
 Аватар для iLoveGoogle
18 / 18 / 2
Регистрация: 27.09.2011
Сообщений: 155
22.03.2012, 22:57
Создай сессию которая в значении держит false если почта не была отправлена пользователем или true если почта отправлена пользователю;Перед каждой отправкой почты проверяешь значение сессии - если значение true то почту не отправляешь если false то отправляешь.
0
22 / 11 / 1
Регистрация: 17.03.2012
Сообщений: 24
22.03.2012, 23:13
Если письмо отправлено успешно, просто делай редирект на эту же страницу.

PHP
1
2
3
4
if (!empty($_POST['submit'])){
    send_mail();
    header("Location: $_SERVER['PHP_SELF']"); //или название страницы
}
0
1 / 1 / 0
Регистрация: 14.02.2012
Сообщений: 22
22.03.2012, 23:30  [ТС]
Цитата Сообщение от munris Посмотреть сообщение
Если письмо отправлено успешно, просто делай редирект на эту же страницу.

PHP
1
2
3
4
if (!empty($_POST['submit'])){
    send_mail();
    header("Location: $_SERVER['PHP_SELF']"); //или название страницы
}
Огромное спасибо! Всё разабрался! Этот пример подошёл! Ещё раз спасибо.

Тема закрыта
0
1 / 1 / 2
Регистрация: 10.06.2011
Сообщений: 14
23.03.2012, 14:36
Цитата Сообщение от munris Посмотреть сообщение
Если письмо отправлено успешно, просто делай редирект на эту же страницу.

PHP
1
2
3
4
if (!empty($_POST['submit'])){
    send_mail();
    header("Location: $_SERVER['PHP_SELF']"); //или название страницы
}
У меня выдаёт опредупреждение: "Warning: Cannot modify header information - headers already sent......"
В каком месте скрипта нужно ставить header()?
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
23.03.2012, 14:48
хидеры можно юзають перед выводом чего либо
0
0 / 0 / 0
Регистрация: 20.09.2010
Сообщений: 26
23.03.2012, 14:56
Цитата Сообщение от crautcher Посмотреть сообщение
хидеры можно юзають перед выводом чего либо
здесь есть еще люди для онлайна? Помогите с кодом
0
1 / 1 / 0
Регистрация: 14.02.2012
Сообщений: 22
23.03.2012, 15:45  [ТС]
Цитата Сообщение от Riter Посмотреть сообщение
У меня выдаёт опредупреждение: "Warning: Cannot modify header information - headers already sent......"
В каком месте скрипта нужно ставить header()?
Я поставил вот этот кусок кода здесь
PHP
1
2
3
4
5
...
$mail->Body = $message;
  if (!$mail->Send()) die ('Mailer Error: '.$mail->ErrorInfo);
  if (!empty($_POST['submit'])) {send_mail(); header('Location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);}
...
Единственно, сейчас не отображается сообщение ( echo) об отправки
0
 Аватар для shafl
258 / 147 / 37
Регистрация: 24.01.2011
Сообщений: 427
23.03.2012, 15:49
Ну закреплено же в голове всего раздела: Что означает предупреждение "headers already sent"
0
22 / 11 / 1
Регистрация: 17.03.2012
Сообщений: 24
23.03.2012, 16:37
Цитата Сообщение от deeand Посмотреть сообщение
Единственно, сейчас не отображается сообщение ( echo) об отправки
Ну да. После редиректа, скрипт начинает выполнятся сначала.
Можно просто передавать какое-нибудь значение(типа mail.php?send=ok) и через $_GET['send'] проверять, если есть, то выводить что сообщение успешно отправлено.
0
1 / 1 / 0
Регистрация: 14.02.2012
Сообщений: 22
23.03.2012, 16:41  [ТС]
Цитата Сообщение от munris Посмотреть сообщение
Ну да. После редиректа, скрипт начинает выполнятся сначала.
Можно просто передавать какое-нибудь значение(типа mail.php?send=ok) и через $_GET['send'] проверять, если есть, то выводить что сообщение успешно отправлено.
Спасибо!
0
1 / 1 / 2
Регистрация: 10.06.2011
Сообщений: 14
23.03.2012, 18:06
Цитата Сообщение от shafl Посмотреть сообщение
Ну закреплено же в голове всего раздела: Что означает предупреждение "headers already sent"
Это понятно, а как поступить если обработка и вывод сообщений происходит в середине HTML кода?
Обьясню.
Дело в том что оболочка сайта одна для всех страниц, а "начинка" вызывается include-ом.
Для каждой вложенной страницы свой PHP-файл, в том числе и форум вместе с обработчиком.
При обновлении страницы (после отправки сообщения), оно дублируется. Не смертельно, но не приятно...
0
1 / 1 / 0
Регистрация: 14.02.2012
Сообщений: 22
23.03.2012, 21:03  [ТС]
munris

Что-то как-то не стыкуется Может быть ещё какую-нибудь идейку подкините либо инструкцию (желательно поподробней)?
0
22 / 11 / 1
Регистрация: 17.03.2012
Сообщений: 24
23.03.2012, 21:59
PHP
1
2
3
4
5
6
7
8
9
if (!empty($_POST['submit'])){
    send_mail();
    header("Location: namepage.php?mail=ok");
}
 
//в начало странице вставляешь:
if(isset($_GET['mail']) && ($_GET['mail'] == 'ok')){
    echo "Ваше сообщение отправлено";
}
1
1 / 1 / 0
Регистрация: 14.02.2012
Сообщений: 22
23.03.2012, 22:37  [ТС]
Цитата Сообщение от munris Посмотреть сообщение
PHP
1
2
3
4
5
6
7
8
9
if (!empty($_POST['submit'])){
    send_mail();
    header("Location: namepage.php?mail=ok");
}
 
//в начало странице вставляешь:
if(isset($_GET['mail']) && ($_GET['mail'] == 'ok')){
    echo "Ваше сообщение отправлено";
}
Ок, заработало Огромное спасибо! И последний вопрос, можно как-то осуществить чтобы сообщение выводилось в pop-up окно?

Типа так:
JavaScript
1
<script language='JavaScript'>alert('Спасибо ".$_POST['name']." за использование контактной формы! Ваш email был отправлен и я свяжусь с Вами в кратчайшие сроки.')</script>
Заранее спасибо и желаю всем отличной пятницы и выходных
0
22 / 11 / 1
Регистрация: 17.03.2012
Сообщений: 24
23.03.2012, 22:43
JavaScript
1
alert("Спасибо <?=$_POST['name']?> за использование контактной формы! Ваш email был отправлен и я свяжусь с Вами в кратчайшие сроки.")
0
1 / 1 / 2
Регистрация: 10.06.2011
Сообщений: 14
23.03.2012, 23:22
Цитата Сообщение от Riter Посмотреть сообщение
Это понятно, а как поступить если обработка и вывод сообщений происходит в середине HTML кода?
Обьясню.
Дело в том что оболочка сайта одна для всех страниц, а "начинка" вызывается include-ом.
Для каждой вложенной страницы свой PHP-файл, в том числе и форум вместе с обработчиком.
При обновлении страницы (после отправки сообщения), оно дублируется. Не смертельно, но не приятно...
Мой вопрос остался без поддержки?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.03.2012, 23:22
Помогаю со студенческими работами здесь

Необходимо скрыть форму после отправки
&lt;html&gt; &lt;head&gt; &lt;title&gt;Data Base&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;table border=&quot;0&quot; cellspacing=&quot;5&quot;...

как проверить поля форму занять или нет до отправки форму
как проверить поля форму занять или нет до отправки форму как через ajax проверить например: поля логин занять или нет если...

Печаль Не приходит письмо после отправки через форму на сайте
Доброго времени суток Уважаемые форумчане! Оговорю сразу, не силен в php, да и вообще в программировании... Столкнулся с проблемой, на...

очистка формы после отправки. КАК? То есть после нажатия на кнопку или что? Как реализовать?
// если форма без ошибок if(empty($errors)){ // собираем данные из формы $message = &quot;Имя пользователя: &quot; . $_POST ....

Как реализовать форму отправки данных на почту?
Как реализовать форму отправки данных на почту при помощи HTML и PHP как на картинке? Мне нужна вот такая форма как на картинке, чтобы имя...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru