Все данные отправляются кроме файла
<input class="igroup-input" type="file" name="fileFF[]" multiple id="fileFF" accept="image/*">
<?php
if (isset ($_POST['nameFF'])) {
$to = "1@gmail.com";
$from = $_POST['nameFF'];
$subject = "Запрос на подачу рекламы с ".$_SERVER['HTTP_REFERER'];
$message = "Регион: ".$_POST['nameF']."\nГород: ".$_POST['nameFF']."\nНазвание компании: ".$_POST['nameComp']."\nКатегория: ".$_POST['nameFF1']."\nНомер телефона: ".$_POST['telFF']."\nСсылка ВК: ".$_POST['vk']."\nИмя менеджера: ".$_POST['nameMen']."\nДата и время: ".$_POST['loginFF']."\nIP: ".$_SERVER['REMOTE_ADDR'];
$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 < 10000000) {
mail($to, $subject, $message, $headers);
$output = '<script>alert("Ваше сообщение получено, спасибо!");</script>';
} else {
$output = '<script>alert("Извините, письмо не отправлено. Размер всех файлов превышает 10 МБ.");</script>';
}
}
?>
$(".fofm1").submit(function() {
var str = $(this).serialize();
$.ajax({
type: "POST",
url: "contact.php",
data: str,
success: function(msg) {
if(msg == 'ok') {
$('.popup2, .overlay').css('opacity','1');
$('.popup2, .overlay').css('visibility','visible');
$('.popup').css({'opacity':'0','visibility':'hidden'});
}
else {
$('.popup2 .window').html('<h5>Ошибка</h5><p>Сообщение не отправлено, убедитесь в правильности заполнение полей</p>');
$('.popup2, .overlay').css('opacity','1');
$('.popup2, .overlay').css('visibility','visible');
$('.popup').css({'opacity':'0','visibility':'hidden'});
}
}
});
return false;
});
Проблема заключается в том, что метод .serialize()
не умеет корректно обрабатывать файлы. Об этом явно сказано в документации, а именно:
Note: Only "successful controls" are serialized to the string. No submit button value is serialized since the form was not submitted using a button. For a form element's value to be included in the serialized string, the element must have a name attribute. Values from checkboxes and radio buttons (inputs of type "radio" or "checkbox") are included only if they are checked. Data from file select elements is not serialized.
Посмотрите на примеры вот отсюда. Там подробно разобран как раз ваш случай с отправкой файла.
Для лучшего понимания, как именно происходит загрузка файлов через AJAX, рекомендую посмотреть также вот эту страничку. Там примеры даны на обычно JS, но зато подробно описано - что и почему.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Вот такие выходят ошибки, вроде как сайт должен располагаться на одном домене, а обойти или поставить какую то настройку нельзя?
Нужно вывести слайдер из поля the_sub_field('owl_carousel') без плагина, средствами Wordpress