Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.03.2012, 21:33
Новичок на форуме
Отправить личное сообщение для deeand Посмотреть профиль Найти все сообщения от deeand
 
Регистрация: 12.12.2011
Сообщений: 6

После редиректа не отображается сообщение об отправки письма.
В общем, проблема заключалась в том, что после отправки формы, при обновлении страницы, письмо повторно отправлялась. Я сделал редирект на страницу с формой и при обновлении страницы, письмо уже повторно не отправляется, НО исчез 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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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; } }
?>

Последний раз редактировалось deeand, 23.03.2012 в 21:53. Причина: дополнение
Ответить с цитированием
  #2 (permalink)  
Старый 30.03.2012, 16:03
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,577

твой код не смотрел, но в основном такие мессиджи показывают так:
Когда надо отправить в сессии сохраняют текст мессиджа - например в $_SESSION['message']
А когда формируется страница и в шаблоне выводишь мессидж - он достается из $_SESSION['message'] и unset($_SESSION['message']).
А когда редирект идет - до вывода страницы не доходит из-за exit()
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запретить перенаправление после отправки POST hi_artem AJAX и COMET 2 16.10.2011 18:41
Окно Shadowbox и форма отправки письма loen Общие вопросы Javascript 1 16.05.2011 20:33
Не работает кнопка отправки после загрузки Igor Shmigoff jQuery 2 29.12.2010 21:51
Русские символы показываются каракулями после отправки AndreyT AJAX и COMET 19 04.06.2010 18:54
Проблема с дизайном после отправки xmlhttprequest, Проблема с дизайном после отправки cyberx AJAX и COMET 3 01.05.2010 17:07