@booyokkk

Как реализовать форму обратной связи с аттачем?

У меня есть форма которая отправляет данные на e-mail. Я еще хочу реализовать функцию аттача файла (input type="file"), но не знаю как это прописать в php. Помогите, вот мой код:
<form action="#" method="POST" id="callUs-1" enctype="multipart/form-data">
                       
                        <div class="control-group">
                            <input type="text" placeholder="IME" id="name" name="name">
                            <input type="text" placeholder="TELEFON" style="margin-top: 10px;" id="phone" name="phone">
                            <input type="text" placeholder="navedite izdelek, ki ga želite z izmerami" style="margin-top: 10px;" id="text" name="text">
                            <div class="control-group-1">
                                    <label class="file_upload">
                                        <span class="button">priložite FOTOGRAFIJO, opišitive vaše želje</span>
                                        <input type="file" name="file_name" id="file_name">
                                    </label>
                            </div>
                        </div>

                        <div class="control-group">

                            <div class="controls buttons">

                                <button class="button-1" type="submit">
                                    <span>IZRAČUN CENE VAŠEGA NAROČILA</span>
                                </button>
                            </div>
                        </div>
                    </form>

$(function(){
                var name, phone, host, price, mail, text, title, file_name;
                jQuery('#callUs-1').submit(function(e){
                    e.preventDefault();
                    name = $('#name').val();
                    phone = $('#phone').val();
                    text = $('#text').val();
                    file_name = $('#file_name').val();
                    $.ajax({
                        type:'post',
                        data: {name:name, phone:phone, text:text, file_name:file_name},
                        url:'http://kovka.site2b.com.ua/wp-content/themes/my_site/js/mail.php', //Поменять URL
                        success:function(data){
                            alert("Наші менеджери зв'яжуться з Вами у найближчий час за вказаними Вами контактними даними");
                        }
                    });
                });
            });

<?php
function clearUserData($data) {
	return nl2br(strip_tags(stripslashes(trim($data))));
}

$name = clearUserData($_POST['name']);
$phone = clearUserData($_POST['phone']);
$text = clearUserData($_POST['text']);

$to = 'booyokkk@site2b.com.ua';///ТУТ можно поменять ел почту кому отправлять
$sub = 'Замовлення готової роботи';
$message = "<html><head><title>sdfsdfs</title></head><body><p>Замовлення готової роботи!<br />Ім'я:&nbsp;".$name."<br />Телефон:&nbsp;".$phone."<br />Повідомлення:&nbsp;".$text."<br />
<p>&nbsp;</p>

</p></body></html>";

$headers= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=utf-8\r\n";
mail($to,$sub,$message,$headers);
?>
  • Вопрос задан
  • 5320 просмотров
Пригласить эксперта
Ответы на вопрос 2
Ваш способ отправки данных для файлов, увы, не подойдет. Здесь рекомендуют использовать для аякс отправки данных объект FormData

Обработчик загрузки вложенных файлов на php - здесь

Ну и раз разработка под Wordpress-ом, то для отправки письма с вложением (да и для отправки письма вообще) лучше использовать функцию wp_mail (там же есть пример отправки письма со вложением)

P.S. А зачем понадобилось писать свой велосипед под Wordpress, вместо того чтобы просто использовать Contact Form 7? ( https://wordpress.org/plugins/contact-form-7/, contactform7.com/file-uploading-and-attachment/)
Ответ написан
Комментировать
zoonman
@zoonman
⋆⋆⋆⋆⋆
1. Используйте File API для отправки файл через Ajax.
2. Установите composer
3. Подключите PHP Simple и отправляйте аттачи на здоровье.

Ваши недопонимания:
нельзя напрямую отправить файл через ajax;
функция mail() не поддерживает отправку вложений в простом виде, необходимо вручную создавать тело письма.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы