Почему не отправляются фото с формы обратной связи если отправлять с телефона?
Здравствуйте! Всем доброго дня и хорошего настроения!
Есть форма обратной связи. Если заполнять на компьютере ее и прикреплять файлы, то все работает: приходит 2 письма: просто с текстом и такая же копия + вложение.
Но вот если заполнять форму на телефоне и прикреплять файл, то приходит только текст. Без вложения. Подскажите, пожалуйста, в чем тут дело?
<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">Email:</label> <input type="email" name="contactFF" id="contactFF" required placeholder="например, ivan@yandex.ru" x-autocompletetype="email" class="w100 border"> <label for="fileFF">Прикрепить файл:</label> <!-- <input type="file" name="fileFF[]" multiple id="fileFF" class="w100"> --> <input type="file" name="fileFF[]" multiple="multiple" multiple id="fileFF" class="w100" name="files[]" /> <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> |
<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">Email:</label> <input type="email" name="contactFF" id="contactFF" required placeholder="например, ivan@yandex.ru" x-autocompletetype="email" class="w100 border"> <label for="fileFF">Прикрепить файл:</label> <!-- <input type="file" name="fileFF[]" multiple id="fileFF" class="w100"> --> <input type="file" name="fileFF[]" multiple="multiple" multiple id="fileFF" class="w100" name="files[]" /> <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>
document.getElementById('feedback-form').addEventListener('submit', function(evt){ var http = new XMLHttpRequest(), f = this; evt.preventDefault(); http.open("POST", "mail.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); |
document.getElementById('feedback-form').addEventListener('submit', function(evt){ var http = new XMLHttpRequest(), f = this; evt.preventDefault(); http.open("POST", "mail.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);
<?php if (isset ($_POST['contactFF'])) { $to = "info@antik88.ru"; // поменять на свой электронный адрес $from = $_POST['contactFF']; $subject = "Заполнена контактная форма с ".$_SERVER['HTTP_REFERER']; $message = "Имя: ".$_POST['nameFF']."nEmail: ".$from."nIP: ".$_SERVER['REMOTE_ADDR']."nСообщение: ".$_POST['messageFF']; $boundary = md5(date('r', time())); $filesize = ''; $headers = "MIME-Version: 1.0rn"; $headers .= "From: " . $from . "rn"; $headers .= "Reply-To: " . $from . "rn"; $headers .= "Content-Type: multipart/mixed; boundary="$boundary"rn"; $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 < 10000000) { // проверка на общий размер всех файлов. Многие почтовые сервисы не принимают вложения больше 10 МБ mail($to, $subject, $message, $headers); echo $_POST['nameFF'].', Ваше сообщение получено, спасибо!'; } else { echo 'Извините, письмо не отправлено. Размер всех файлов превышает 10 МБ.'; } } ?> |
<?php if (isset ($_POST['contactFF'])) { $to = "info@antik88.ru"; // поменять на свой электронный адрес $from = $_POST['contactFF']; $subject = "Заполнена контактная форма с ".$_SERVER['HTTP_REFERER']; $message = "Имя: ".$_POST['nameFF']."nEmail: ".$from."nIP: ".$_SERVER['REMOTE_ADDR']."nСообщение: ".$_POST['messageFF']; $boundary = md5(date('r', time())); $filesize = ''; $headers = "MIME-Version: 1.0rn"; $headers .= "From: " . $from . "rn"; $headers .= "Reply-To: " . $from . "rn"; $headers .= "Content-Type: multipart/mixed; boundary="$boundary"rn"; $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 < 10000000) { // проверка на общий размер всех файлов. Многие почтовые сервисы не принимают вложения больше 10 МБ mail($to, $subject, $message, $headers); echo $_POST['nameFF'].', Ваше сообщение получено, спасибо!'; } else { echo 'Извините, письмо не отправлено. Размер всех файлов превышает 10 МБ.'; } } ?>
Заранее благодарю за советы!
Дополнительно:
Выкинуть отсюда js и попробовать без него
<input type="file" name="fileFF[]" multiple="multiple" multiple id="fileFF" class="w100" name="files[]" /> |
<input type="file" name="fileFF[]" multiple="multiple" multiple id="fileFF" class="w100" name="files[]" />
Два раза указан атрибут name, причем теперь он files[], а в коде проверяется fileFF
- ThunderCat Ой, спасибо Вам большое! Я уже расстроилась, что опять всё зря)) Спасибо большое! Я уже ничего не вижу, а Вы так быстро нашли мою дурацкую ошибку)
- Анна, Воспользуйтесь нормальным редактором для разработки. И он вам будет подсвечивать такие примитивные ошибки или опечатки
Сразу видно, что name и multiple повторяются
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос

Проблема, с которой вы столкнулись, может иметь несколько потенциальных причин. Давайте рассмотрим несколько возможных решений:
1. Проверьте настройки размера и типа файла: Возможно, что фотографии, которые вы пытаетесь отправить через форму обратной связи, не соответствуют требованиям по размеру или типу файла, установленным на сервере. Убедитесь, что размер файлов не превышает установленный лимит и файлы имеют допустимые расширения (например, .jpg, .png).
2. Проверьте соединение с интернетом: Если вы отправляете фотографии с телефона, убедитесь, что у вас есть стабильное подключение к интернету. Плохое соединение может привести к проблемам с загрузкой файлов на сервер.
3. Проверьте код формы обратной связи: Возможно, в коде формы обратной связи есть ошибки или неправильно настроены заголовки при отправке файлов с мобильного устройства. Убедитесь, что код формы правильно обрабатывает загрузку файлов с мобильных устройств.
4. Попробуйте использовать другой браузер или устройство: Иногда проблема может быть связана с конкретным браузером или устройством. Попробуйте отправить фотографии с другого браузера или устройства, чтобы исключить возможные проблемы.
Если после выполнения этих шагов проблема не будет решена, рекомендуется обратиться к специалисту по веб-разработке или администратору сервера для дальнейшей диагностики и устранения неполадок.