WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Новые WordPress шаблоны

Необходимо записывать в текстовый файл данные введенные в форме

Необходимо записывать в текстовый файл данные введенные в форме на сайте. Форма отправляется по AJAX обработчику и далее уходит письмо на почту. С письмом все отлично, оно доходит, но в файл ничего не записывается. Вот код:

<?php
function ajax_form(){

	$name = $_REQUEST['name'];
	$contact = $_REQUEST['contact'];
	$message = $_REQUEST['message'];
	$response = '';
	$thm  = 'Сообщение с сайта';
	$thm  = "=?utf-8?b?". base64_encode($thm) ."?=";
	$msg = "Имя: ".$name."<br />
		Контакты: ".$contact ."<br />
		Сообщение: ".$message ."<br />";
	$mail_to = 'mail@mail.ru';
	$headers = "Content-Type: text/html; charset=utf-8\n";
	$headers .= 'From: site.name' . "\r\n";

	// Отправляем почтовое сообщение

	if(mail($mail_to, $thm, $msg, $headers)){
		$response = 'Сообщение отправлено';
	}else
		$response = 'Ошибка при отправке';

	// Сообщение о результате отправки почты

	if ( defined( 'DOING_AJAX' ) && DOING_AJAX ){
		echo $response;
		wp_die();
	}

	// Логирование

	$file = "logs.txt";
	$Saved_File = fopen($file, 'a+');
	fwrite($Saved_File, $msg);
	fclose($Saved_File);

}

add_action('wp_ajax_nopriv_ajax_order', 'ajax_form' );
add_action('wp_ajax_ajax_order', 'ajax_form' );
?>
Заметки к вопросу:
campusboy 2 месяца назад

Как же он будет сохранять, если ты wp_die() делаешь раньше, чем отрабатывает функционал логирования?

Glomberg 2 месяца назад

Перефразирую комментатора выше кодом:

<?php
function ajax_form(){

	$name = $_REQUEST['name'];
	$contact = $_REQUEST['contact'];
	$message = $_REQUEST['message'];
	$response = '';
	$thm  = 'Сообщение с сайта';
	$thm  = "=?utf-8?b?". base64_encode($thm) ."?=";
	$msg = "Имя: ".$name."<br />
		Контакты: ".$contact ."<br />
		Сообщение: ".$message ."<br />";
	$mail_to = 'mail@mail.ru';
	$headers = "Content-Type: text/html; charset=utf-8\n";
	$headers .= 'From: site.name' . "\r\n";

	// Отправляем почтовое сообщение

	if(mail($mail_to, $thm, $msg, $headers)){
		$response = 'Сообщение отправлено';
	} else {
		$response = 'Ошибка при отправке';
	}

	// Сообщение о результате отправки почты

	if ( defined( 'DOING_AJAX' ) && DOING_AJAX ){
		echo $response;

		// Логирование  
		// Можно было в одну строу file_put_contents();
		$file = "logs.txt";
		$Saved_File = fopen($file, 'a+');
		fwrite($Saved_File, $msg);
		fclose($Saved_File);

		wp_die();

	}   

}

add_action('wp_ajax_nopriv_ajax_order', 'ajax_form' );
add_action('wp_ajax_ajax_order', 'ajax_form' );
?>
0
2 месяца назад

Нет ответов на этот вопрос.

    На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация