Здравствуйте, Дорогие Форумчане!
Помогите, пожалуйста, разобраться.
Я в javascript силен не сильно, можно сказать почти 0, в основном если что то делаю то пользуюсь jQuery, но и в нем еще не очень)
Возникла у меня такая проблемка, есть у меня формочка обратной связи обычная, которая отправляет сообщения от пользователей ко мне на почту, происходит это через Ajax в php, все как обычно, и встала у меня необходимость, чтобы пользователи еще могли файлик прикладывать и вместе с сообщением мне на почту отсылать. Вставил я значит в форму строчку input type=file, в php дописал прицепление вложения к письму, и... без ajax все работает, а с ajax'ом не фига, вычитал что метод serialize, который передает данные формы, не передает данные о файле. Пытаюсь найти решение уже неделю но ни как не выходит.. Помогите решить проблемку, пожалуйста.
Вот то что у меня есть:
html:
<form id="commentForm" class="form" method="post" action enctype="multipart/form-data">
<fieldset>
<input type="text" placeholder="Имя:" value name="name">
<input id="email" type="text" placeholder="E-mail:" value name="email">
<label for="file">Приложите свое изображение:</label>
<input id="file" type="file" value name="file">
<textarea placeholder="Ваши пожелания:" cols rows value name="message"></textarea>
</fieldset>
<input id="button" class="submit" type="submit" value="Отправить" name="submit">
</form>
ajax
jQuery(document).ready(function() {
$("#commentForm").submit(function() { return false; });
$("#button").on("click", function(){
var emailval = $("#email").val();
var mailvalid = validateEmail(emailval);
if(mailvalid == false) {
$("#email").addClass("error");
}
else if(mailvalid == true){
$("#email").removeClass("error");
}
if(mailvalid == true) {
$(".submit").replaceWith("<div class='form_dscr'><p class='sending'>Отправка...</p></div>");
$.ajax({
type: 'POST',
url: 'mail.php',
data: $("#commentForm").serialize(),
success: function(data) {
if(data == "true") {
$(".sending").replaceWith("<p>Принято!<p>");
} else {
$(".sending").replaceWith("<p>Ошибка! Обновите страницу...<p>");
}
}
});
}
});
});
ну и mail.php
<?php
function mail_attachment($filename, $mailto, $from_mail, $from_name, $replyto, $subject, $message)
{
$file = $filename;
$file_size = filesize($file);
$handle = fopen($file, "r");
$content = fread($handle, $file_size);
fclose($handle);
$content = chunk_split(base64_encode($content));
$uid = md5(uniqid(time()));
$name = basename($file);
$header = "From: ".$from_name." <".$from_mail.">\r\n";
$header .= "Reply-To: ".$replyto."\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
$header .= "This is a multi-part message in MIME format.\r\n";
$header .= "--".$uid."\r\n";
$header .= "Content-type:text/plain; charset=utf-8 \r\n";
$header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$header .= $message."\r\n\r\n";
$header .= "--".$uid."\r\n";
$header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n";
$header .= "Content-Transfer-Encoding: base64\r\n";
$header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
$header .= $content."\r\n\r\n";
$header .= "--".$uid."--";
return mail($mailto, $subject, "", $header);
}
$sendto = "my@mail.ru";
$username = $_POST['name'];
$useremail = $_POST['email'];
$usermsg = $_POST['message'];
$subjectuser = "Сообщение";
$headersuser = "From: Сообщение\r\n";
$headersuser .= "Reply-To: ". strip_tags($username) . "\r\n";
$headersuser .= "MIME-Version: 1.0\r\n";
$headersuser .= "Content-Type: text/html;charset=utf-8 \r\n";
$my_file = "";
if (!empty($_FILES['file']['tmp_name']))
{
$path = $_FILES['file']['name'];
if (copy($_FILES['file']['tmp_name'], $path)) $my_file = $path;
}
$my_name = "Письмо с блога";
$my_mail = "my@mail.ru";
$my_replyto = "my@mail.ru";
$my_message = "Имя: ".$username."\r\nЕ-mail: ".$useremail."\r\nСообщение: ".$usermsg."\r\n";
if(@mail_attachment($my_file, $sendto, $my_mail, $my_name, $my_replyto, $subjectuser, $my_message)){
echo "true";
} else {
echo "false";
}
?>