После редиректа не отображается сообщение об отправки письма.
В общем, проблема заключалась в том, что после отправки формы, при обновлении страницы, письмо повторно отправлялась. Я сделал редирект на страницу с формой и при обновлении страницы, письмо уже повторно не отправляется, НО исчез echo.
Подскажите, пожалуйста, как вывести сообщение об отправки письма(без перезагрузки страницы) после редиректа? Спасибо. Есть форма ввода данных с аттачем в PHP-файле: ......<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 ob_start(); if(isset($_POST['submit'])) { /***---Если форма отправлена---***/ header("Content-type: text/txt; charset=UTF-8"); function send_mail() { $name = htmlspecialchars($_POST['name']); } { $subject = htmlspecialchars($_POST['subject']); '=?koi8-r?B?'.base64_encode(convert_cyr_string($subject, "w","k")).'?=';} { $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->CharSet = "UTF-8"; $mail->IsHTML(true); $mail->Subject = $_POST['subject']." | Письмо пришло с сайта bla-bla.ru"; 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(); header('Location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);exit;} }} 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; } } ?> |
твой код не смотрел, но в основном такие мессиджи показывают так:
Когда надо отправить в сессии сохраняют текст мессиджа - например в $_SESSION['message'] А когда формируется страница и в шаблоне выводишь мессидж - он достается из $_SESSION['message'] и unset($_SESSION['message']). А когда редирект идет - до вывода страницы не доходит из-за exit() |
Часовой пояс GMT +3, время: 06:30. |