Установил на сайт скрипт Обратной связи, изменил под себя (использую как Задать вопрос), все работает, но при отправке не проверяет 2 поля <select> (выбрано в них что-то или нет).
Еще нужно прикрутить какую-нибудь капчу, чтобы спамеры не доставали.
Сам не смог справиться с этим, знаний не хватает. Помогите пожалуйста.
Заранее благодарю.
файл mails_sender.php
<?php
// Адрес, куда отправляем письмо
$to = 'pochta@mail.ru';
// Получаем данные от пользователя
// Все данные обязательно нужно проверять на правильность!
$userEmail = filter_input(INPUT_POST, 'youremail', FILTER_VALIDATE_EMAIL);
$subject = filter_input(INPUT_POST, 'subject', FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW);
$option = filter_input(INPUT_POST, 'option', FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW);
$message = strip_tags(filter_input(INPUT_POST, 'message', FILTER_SANITIZE_MAGIC_QUOTES), '<p><a><b><div><br>');
$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW);
$sex = filter_input(INPUT_POST, 'sex', FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW);
// Проверка, что данные не пустые.
// Нас не интересуют анонимки
if (empty($userEmail)) {
die('Отсутствует или неверен адрес почты');
// Нас не интересуют послания с пустым сообщением
} elseif (empty($message)) {
die('Отсутствует сообщение');
} elseif (empty($sex)) {
$sex = '[Выберите Ваш пол]';
} elseif (empty($option)) {
$option = '[Выберите сотрудника]';
}
// elseif (empty($subject)) {
// $subject = '[тема не указана]';}
$the_file = '';
//Если пользователь выбрал файл для отправки
if (!empty($_FILES['fileforsending']['tmp_name'])) {
// Закачиваем файл
$path = $_FILES['fileforsending']['name'];
if (copy($_FILES['fileforsending']['tmp_name'], $path)) {
$the_file = $path;
}
}
// Если есть прикреплённый файл, то заголовки чуть другие.
// Поэтому, в зависимости от того, отправил ли пользователь файл,
// выбираем, что делать дальше
$headers = null;
if (empty($the_file)) {
// эта часть кода отвечает за отправку сообщений без вложений
// собираем заголовки
$headers = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-type: text/html; charset=UTF-8";
$headers[] = "From: $name <$userEmail>";
$headers[] = "Bcc: JJ Chong <bcc@domain2.com>";
$headers[] = "Reply-To: Recipient Name <receiver@domain3.com>";
$headers[] = "Subject: Связь с администратором!";
$headers[] = "X-Mailer: PHP/" . phpversion();
// собираем текст письма
$allmsg = "
<p><b>Пол:</b> $sex</p>
<p><b>E-mail:</b> $userEmail</p>
<p><b>Сотрудник:</b> $option</p>
<p><b>Сообщение:</b> $message</p>";
$allmsg = " . $allmsg . ";
// отправляем
if (!mail($to, $subject, $allmsg, implode("\r\n", $headers))) {
echo 'Письмо не отправлено - что-то не сработало.';
} else {
echo 'Ваше письмо успешно отправлено!';
}
} else {
// эта часть кода отвечает за отправку сообщений без вложений
// читаем отправляемый файл в строку
$fp = fopen($the_file, "r");
if (!$the_file) {
die("Ошибка отправки письма: Файл $the_file не может быть прочитан.");
}
$file = fread($fp, filesize($path));
fclose($fp);
// удаляем временный файл
unlink($path);
// собираем текст письма
$allmsg = "
<p><b>Пол:</b> $sex</p>
<p><b>E-mail:</b> $userEmail</p>
<p><b>Сотрудник:</b> $option</p>
<p><b>Сообщение:</b> $message</p>";
$allmsg = " . $allmsg . ";
// генерируем разделитель
$boundary = "--" . md5(uniqid(time()));
// собираем заголовки
$headers = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "From: $name <$userEmail>";
$headers[] = "Bcc: JJ Chong <bcc@domain2.com>";
$headers[] = "Reply-To: Recipient Name <receiver@domain3.com>";
$headers[] = "Subject: Связь с администратором!";
$headers[] = "X-Mailer: PHP/" . phpversion();
$headers[] = "Content-Type: multipart/mixed; boundary=\"$boundary\"\n";
// собираем текст письма + приложенынй файл
$multipart = array();
$multipart[] = "--$boundary";
$multipart[] = "Content-Type: text/html; charset=UTF-8";
$multipart[] = "Content-Transfer-Encoding: Quot-Printed\r\n";
$multipart[] = "$allmsg\r\n";
$multipart[] = "--$boundary";
$multipart[] = "Content-Type: application/octet-stream";
$multipart[] = "Content-Transfer-Encoding: base64";
$multipart[] = "Content-Disposition: attachment; filename = \"" . $path . "\"\r\n";
$multipart[] = chunk_split(base64_encode($file));
$multipart[] = "--$boundary";
// отправляем
if (!mail($to, $subject, implode("\r\n", $multipart), implode("\r\n", $headers))) {
echo 'Письмо не отправлено - что-то не сработало.';
} else {
echo 'Отправлено письмо с вложениями.';
}
}