anxieter
@anxieter

PHPMailer перехват и отображение переданных данных?

Здравствуйте.
Совсем недавно стал изучать PHP поэтому никак не могу понять что происходит с таким кодом.
По одному уроку сделал скрипт отправки письма - работает хорошо, но вот чтобы дальше с ним работать - я хочу видеть, какие данные он отправляет в POST. Но тут происходит какая-то магия.

<html>
<head>
	<title>Отправка писем с помощью PHPmailer</title>
	<meta charset="utf-8">
</head>
<body>
<?php
	if( $_POST ){
	require_once "lib/class.phpmailer.php";
	$mail = new PHPmailer;
	$mail->IsSMTP();
	$mail->Host = "127.0.0.1";
	$mail->Port = 25; 
	$mail->CharSet = 'UTF-8';
	$mail->Username = "xxxxx";// логин под которым заходим в почту
	$mail->Password ="xxxx";// пароль от почты
	$mail->SetFrom('root@localhost.com', 'Локальный компьютер'); // От кого отправлено письмо	
	//Тело письма
	$mail->isHTML(true);
	$mail->Subject = $_POST['subject'];
	$mail->Body = "Имя: {$_POST['name']}<br> Email: {$_POST['email']}<br> Сообщение: " . nl2br($_POST['body']);
	$mail->AltBody = "Имя: {$_POST['name']}\r\n Email: {$_POST['email']}\r\n Сообщение: {$_POST['body']}";
	$address = "root@localhost.com"; // кому отправляем
	$mail->AddAddress($address, 'xxxxxxxx');// можно дублировать	
	$mail->AddAttachment("files/mail.pdf");
	if( $mail->send() ){
		echo $answer = '1';
	}else {
		$answer = '0';
	}		
		die( $answer );
	}
	echo "<pre>";
		print_r($_POST);
	echo "</pre>";

	echo "<pre>";
	foreach ($_POST as $key=>$value){
             print_r("<p>".$key." = " . $value . "</p>"); 
         };
        echo "</pre>";
?>

<form action="" method="POST" id="contact"><!--  action если обработчик будет на другой странице-->
	<p><label for="name">Имя</label><input id="name" name="name" type="text"><span></span></p>
	<p><label for="">Тема</label><input id="subject" name="subject" type="text"><span></span></p>
	<p><label for="">Email</label><input id="email" name="email" type="text"><span></span></p>
	<p><label for="">Сообщение</label><textarea id="body" name="body" id="" cols="30" rows="10"></textarea><span></span></p>
	<p><input type="submit" id="submit" name="submit" value="Выслать"><span></span></p>
</form>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
	$(function(){
		$('#contact').submit(function(){
			var errors = false;
			$(this).find('span').empty();
			$(this).find('input, textarea').each(function(){
				if($.trim( $(this).val() ) == ''){
					errors = true;
					$(this).next().text('Не заполнено поле' + $(this).prev().text());
				}
			});

			if(!errors) {
				var data = $('#contact').serialize();// склеивает данные форму в qerystring
				// console.log(data);
				$.ajax({
					url: 'index.php',
					type: 'POST',
					data: data,
					beforeSend: function(){
						$('#submit').next().text('Отправляю...');
					},
					success: function(res){
						if(res){     // подумать почему res != 1;
							console.log(res);					
							$('#contact').find('input:not(#submit), textarea').val('');
							$('#submit').next().empty();
						}else {
							$('#submit').next().empty();
							alert('Ошибка отправки');
						}	
					},
					error: function() {
						alert('Ошибка');
					}
				});
			}
			return false;
		})
	});
</script>
</body>
</html>


Первое с чем я столкнулся - это то, что console.log(res); выводит не 1 или 0, а вот что в консоли:
<html>
<head>
	<title>Отправка писем с помощью PHPmailer</title>
	<meta charset="utf-8">
</head>
<body>
11

Объясните почему он цепляет HTML-код???
Далее не понимаю что происходит в этом участке
if( $mail->send() ){
echo $answer = '1';
}else {
$answer = '0';
}
echo $answer = '1'; я так понимаю - это 1чка после </body>
Но я ее не вижу в документе, а вижу только в консоли.
И вообще, все что внутри этого условия - не выводится. Как будто бы $mail->send() на условие не реагирует.
Далее я хочу перехватить;
echo "<pre>";
		print_r($_POST);
	echo "</pre>";

- так выводится пустой массив Array();
ясно что последующий foreach ничего не вывел.
Как мне отобразить POST-данные?
Заранее спасибо.
  • Вопрос задан
  • 322 просмотра
Пригласить эксперта
Ответы на вопрос 2
djQuery
@djQuery
"Кодируем помаленьку" ("Сказка о Тройке")))
Вариантов тьма. Если хотите, можем поковыряться через TeamViewer....
Ответ написан
Комментировать
anxieter
@anxieter Автор вопроса
Спасибо за быстрый ответ.
Итак, делаю такую проверку
if( $_POST['submit'] ){	
	echo "<pre>";
		print_r($_POST);
	echo "</pre>";
	} else echo "no POST data";


Выводится
Notice: Undefined index: submit in C:\xampp\htdocs\MAILSEND\index.php on line 58
no POST data

Странно, но ведь в самом начале скрипта идет проверка if( $_POST ){...
И весь скрипт выполняется, то есть данные POST где-то идут. Но $_POST['submit'] получается нет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы