Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2018, 16:45   #1
natali12577
Новичок
Джуниор
 
Регистрация: 24.09.2018
Сообщений: 1
По умолчанию Форма с возможностью отправки файлов

Здравствуйте! Помогите, пожалуйста, разобраться в проблеме. Есть форма на сайте, предназначенная для заполнения клиентом. Можно прикрепить свои файлы. При нажатии на кнопку отправить файлы благополучно отправляются на указанную почту. На первый взгляд все работает, но есть нюансы:
1. После нажатия кнопки ничего не происходит. Введенные данные так и остаются в полях. Как перенаправить пользователя на другую страницу после успешной отправки данных? И как оставить пользователя на этой же странице с появлением подписи ниже о неудачной отправке?
2. Не работают заданные в php коде условия: если загружаемые файлы больше определенного размера, то ничего не происходит.
3. Очень хотелось бы избавиться от всплывающего окна с подтверждением отправки.
4. На почте в заголовке приходит корейский нечитаемый шрифт, хотя в <head> прописала <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">. Как сделать нормальный шрифт в заголовке приходящего письма?

Два скриншота прилагаю. Буду очень признательна за помощь

Вот код html:

<form enctype="multipart/form-data" method="post" id="feedback-form">
<label for="nameFF">Имя:</label>
<input type="text" name="nameFF" id="nameFF" required placeholder="Введите Имя" x-autocompletetype="name" class="w100 border">
<label for="contactFF">Электронная почта:</label>
<input type="email" name="contactFF" id="contactFF" required placeholder="Введите адрес электронной почты" x-autocompletetype="email" class="w100 border">
<label for="phone">Введите номер телефона</label>
<input type="text" name="phone" id="phone" required placeholder="Введите свой номер телефона" class="w100 border">
<label for="fileFF">Прикрепить файл:</label>
<input type="file" name="fileFF[]" multiple id="fileFF" class="w100">
<label for="messageFF">Заказ:</label>
<textarea name="messageFF" id="messageFF" required rows="5" placeholder="Детали заявки…" class="w100 border"></textarea>
<br>
<input value="Отправить" type="submit" id="submitFF">
</form>

<script>
document.getElementById('feedback-form').addEventListener('submit', function (evt) {
var http = new XMLHttpRequest(), f = this;
evt.preventDefault();
http.open("POST", "assets/contacts.php", true);
http.onreadystatechange = function () {
if (http.readyState == 4 && http.status == 200) {
alert(http.responseText);
if (http.responseText.indexOf(f.nameFF .value) == 0) { // очистить поле сообщения, если в ответе первым словом будет имя отправителя
f.messageFF.removeAttribute('value' );
f.messageFF.value = '';
}
}
}
http.onerror = function () {
alert('Извините, данные не были переданы');
}
http.send(new FormData(f));
}, false);
</script>

Вот php код:

<?php
if (isset($_POST['contactFF'])) {
$to = "work@printnik.ru"; // поменять на свой электронный адрес
$from = $_POST['contactFF'];
$subject = "New order" . $_SERVER['HTTP_REFERER'];
$message = "Name: " . $_POST['nameFF'] . "\n Email: " . $from . "\nIP: " . $_SERVER['REMOTE_ADDR'] . "\n Order: " . $_POST['messageFF'] . "\n Phone number: " . $_POST['phone'];
$boundary = md5(date('r', time()));
$filesize = '';
$headers = "MIME-Version: 1.0\r\n";
$headers .= "From: " . $from . "\r\n";
$headers .= "Reply-To: " . $from . "\r\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
$message = "
Content-Type: multipart/mixed; boundary=\"$boundary\"

--$boundary
Content-Type: text/plain; charset=\"utf-8\"
Content-Transfer-Encoding: 7bit

$message";
for ($i = 0; $i < count($_FILES['fileFF']['name']); $i++) {
if (is_uploaded_file($_FILES['fileFF']['tmp_name'][$i])) {
$attachment = chunk_split(base64_encode(file_get_ contents($_FILES['fileFF']['tmp_name'][$i])));
$filename = $_FILES['fileFF']['name'][$i];
$filetype = $_FILES['fileFF']['type'][$i];
$filesize += $_FILES['fileFF']['size'][$i];
$message.="

--$boundary
Content-Type: \"$filetype\"; name=\"$filename\"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=\"$filename\"

$attachment";
}
}
$message.="
--$boundary--";

if ($filesize < 100000000) { // проверка на общий размер всех файлов. Многие почтовые сервисы не принимают вложения больше 10 МБ
mail($to, $subject, $message, $headers);
echo $_POST['nameFF'] . ', Ваше сообщение получено, спасибо!';
} else {
echo 'Извините, письмо не отправлено. Размер всех файлов превышает 10 МБ.';
}

}
?>
Изображения
Тип файла: jpg Без имени-1.jpg (47.2 Кб, 130 просмотров)
Тип файла: jpg арогнг.jpg (91.0 Кб, 48 просмотров)
natali12577 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
форма отправки сообщений dimahdc HTML и CSS 1 20.12.2016 10:08
Форма отправки сообщения starichenko HTML и CSS 5 26.05.2011 14:52
Форма отправки заказа zlo_999 JavaScript, Ajax 0 26.01.2011 17:43
Форма отправки e-mail Черничный PHP 7 11.11.2008 03:36
форма отправки данных с функцией прикрепления файлов zetrix PHP 0 29.10.2006 20:24