Доброго времени суток! Нашла для своего сайта модальное окно с формой обратной связи на jQuery плагин fancybox. Все работает отлично, но вот пытаюсь сделать отправку файлов через это окно и у меня не получается. Файлы не отправляются. Хотя сам php файл отдельно без модального окна отправляет файлы. Перерыла кучу форумов, но ничего не нашла по этому вопросу. Может в этом случает отправка не возможна? помогите разобраться! заранее спасибо!!
вот код
<div id="wrapper"><a class="modalbox" href="#inline">Оставить заявку</a></div>
<div id="inline">
<span class="title">Оставить заявку</span>
<form enctype="multipart/form-data" method="post" id="contact" name="contact" action="#">
<label for="fio">Представьтесь</label><br>
<input id="fio" name="fio" class="txt">
<br>
<label for="email">Ваш E-mail*</label><br>
<input type="email" id="email" name="email" class="txt">
<br>
<label for="tel">Номер телефона</label><br>
<input id="tel" name="tel" class="txt">
<br>
<label for="msg">Введите сообщение</label>
<textarea id="msg" name="msg" class="txtarea"></textarea>
<label for="fileFF">Прикрепить файл:</label>
<input type="file" name="fileFF[]" multiple id="fileFF" class="txt">
<button id="send">Отправить заявку</button>
</form>
</div>
<!-- basic fancybox setup -->
function validateEmail(email) {
var reg = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return reg.test(email);
}
$(document).ready(function() {
$(".modalbox").fancybox();
$("#contact").submit(function() { return false; });
$("#send").on("click", function(){
var emailval = $("#email").val();
var msgval = $("#msg").val();
var msglen = msgval.length;
var mailvalid = validateEmail(emailval);
if(mailvalid == false) {
$("#email").addClass("error");
}
else if(mailvalid == true){
$("#email").removeClass("error");
}
if(mailvalid == true ) {
// если обе проверки пройдены
// сначала мы скрываем кнопку отправки
$("#send").replaceWith("<em>отправка...</em>");
$.ajax({
type: 'POST',
url: 'sendmessage.php',
data: $("#contact").serialize(),
success: function(data) {
if(data == "true") {
$("#contact").fadeOut("fast", function(){
$(this).before("Вашa заявка отправлена! Наш специалист свяжется с Вами!");
setTimeout("$.fancybox.close()", 4000);
});
} else if(data == "false") {
$("#contact").fadeOut("fast", function(){
$(this).before("Ошибка!");
setTimeout("$.fancybox.close()", 4000);
});
} else {
$("#contact").fadeOut("fast", function(){
$(this).before("Неизвестно! :(");
setTimeout("$.fancybox.close()", 4000);
});
}
}
});
}
});
});
и файл sendmessage.php
$to = "name@yandex.ru"; // поменять на свой адрес
$from = $_POST['email'];
$subject = "Заполнена контактная форма с ".$_SERVER['HTTP_REFERER'];
$message = "Имя: ".$_POST['fio']."\nEmail: ".$from."\nIP: ".$_SERVER['REMOTE_ADDR']."\nСообщение: ".$_POST['msg'];
$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) { // проверка на общий размер всех файлов. Многие почтовые сервисы не принимают вложения больше 10 МБ
mail($to, $subject, $message, $headers);
echo 'true';
} else {
echo 'false'; }