[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: как можно обнулить форму после отправки?
deeand7
Всем привет!

Есть форма ввода данных с аттачем в ПХП-файле:
......<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

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('my@mail.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-редирект.

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

Спасибо.



Спустя 12 минут, 43 секунды (22.03.2012 - 21:09) Visman написал(а):
Используй переадресацию
http://phpforum.ru/index.php?showtopic=59179&hl=location

Спустя 25 минут, 45 секунд (22.03.2012 - 21:35) deeand7 написал(а):
Что-то не хочет работать.

Спустя 8 минут, 50 секунд (22.03.2012 - 21:44) Игорь_Vasinsky написал(а):
header - нужно посылать до любого вывода, у него алергия на session_start() и BOM

поэтому если в юникоде - то файл сохранить в utf без BOM
для submit указать name

потом проверять

if(isset($_POST['submit_name']))
header("Location: .....");


но не каких html, echo, print ранее быть не должно.

Спустя 8 минут, 39 секунд (22.03.2012 - 21:52) deeand7 написал(а):
Спасибо за ответ. Походу понял. Надо потестить.

Спустя 2 минуты, 9 секунд (22.03.2012 - 21:55) Игорь_Vasinsky написал(а):
Цитата
action="<?php echo $_SERVER['PHP_SELF']; ?>"

action=""


и - редирект не после проверки отправки формы, а после успешного выполнения обработчика ;)

Спустя 37 минут, 36 секунд (22.03.2012 - 22:32) deeand7 написал(а):
Всем огромное спасибо! Всё разобрался!

Тема закрыта

Ребят, извиняюсь! Только сегодня заметил, что echo не выводится.
Что можно с этим сделать?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.