Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Простая форма отправки почты (https://javascript.ru/forum/misc/60039-prostaya-forma-otpravki-pochty.html)

TRIGUN 08.12.2015 16:30

Простая форма отправки почты
 
Добрый день всем.

Прошу помочь немного доделать скрипт отправки почты:

php:
<?php

$recepient = "почта получателя";
$sitename = "название сайта";

$name = trim($_POST["name"]);
$phone = trim($_POST["phone"]);
$message = "Имя: $name \nТелефон: $phone";

$pagetitle = "Новая заявка с сайта \"$sitename\"";
mail($recepient, $pagetitle, $message, "Content-type: text/plain; charset=\"utf-8\"\n From: $recepient");

?>


javascript:
$(document).ready(function() {

	$("#form").submit(function() {
		$.ajax({
			type: "POST",
			url: "php/mail.php",
			data: $(this).serialize()
		}).done(function() {
			$(this).find("input").val("");
			alert("Спасибо за заявку! Скоро мы с вами свяжемся.");
			$("#form").trigger("reset");
		});
		return false;
	});
	
});


html:
<form id="form">
<input type="text" pattern="^[А-Яа-яЁё\s]+$" name="name" placeholder="Как вас зовут" id="bottom_form_name" name="name" class="form_name" required />
<input type="text" pattern="[0-9]{5,11}" name="phone" placeholder="Ваш телефон" id="bottom_form_phone" name="phone" class="form_phone" required />
<button class="button"></button>
</form>


Вопрос:
1. После отправки данных, почему то не выводится никакого сообщения, хотя в js вывод присутствует. Хотя бы тултипа хватило бы, мол, ваше сообщение отправлено.
2. Если ставить форму ниже шапки, то после отправки данных обязательно перекинет вверх страницы.
3. Никак не могу добавить адрес/имя отправителя письма. В итоге приходит адрес хостинга.

laimas 08.12.2015 17:43

pattern="^[А-Яа-яЁё\s]+$" - это удобно, но не отменяет правила - сервер обязан проверять данные пришедшие извне, не важно проверялись они на клиенте или нет.

$pagetitle = "Новая заявка с сайта \"$sitename\""; - так не пойдет, кодировать нужно тему сообщения, иначе не обязательно почтовый сервер или клиент пришлет ее в читаемом виде.

Цитата:

Сообщение от TRIGUN
Никак не могу добавить адрес/имя отправителя письма. В итоге приходит адрес хостинга.

Для этого нужно передать в качестве параметра свой адрес предварив его -f, то есть, например

mail('sample@mail.ru', 'subj', 'msg', 'headers', '-finf@my.ru')

Но это будет работать, если пользователь добавлен в доверенные в конфигурации sendmail. Иначе обращайтесь в техподдержку.


Часовой пояс GMT +3, время: 03:04.