Перейти к содержимому

Сервис обмена электронных валют


Форма обратной связи, отправляющая два файла

#1 Diablero

Diablero
  • Пользователь
  • 36 сообщений
  • Репутация: 6
0

Отправлено 19 Декабрь 2014 - 19:56

Добрый день!

 

У меня есть форма обратной связи с текстовыми полями телефон, имя, почта, а также двумя input type="file", позволяющими прицепить 2 файла. Проблема заключается в том, что я не знаю, как сделать так, чтобы эти 2 файла отправлялись одним письмом. Перепробовал много вариантов, решения не нашел. Подключать громоздкие готовые модули не хочу, считаю что можно как-то по простому подцепить 2 загруженных файла. В настоящее время использую код, который отправляет эти файлы двумя отдельными письмами. Итак, мой код:

<?php

$tel = $_POST['tel'];
$name = $_POST['name'];
$email = $_POST['email'];

$to = '/* здесь была почта */'; 

$subject = 'Письмо с сайта файл 1';
$message = '';
$message .= 'Имя: <strong>'.$name.'</strong><br>';
$message .= 'E-Mail: <strong>'.$email.'</strong><br>';
$message .= 'Телефон: <strong>'.$tel.'</strong><br><br>';

$headers = "From: МОЙ САЙТ <$from>" . "\n";
$headers .= "Content-Type: text/html; charset=utf-8\n";

move_uploaded_file($_FILES["filea"]["tmp_name"], WP_CONTENT_DIR .'/uploads/'.basename($_FILES['filea']['name']));
$filesa = array(WP_CONTENT_DIR ."/uploads/".basename($_FILES["filea"]["name"]));

wp_mail( $to, $subject, $message, $headers, $filesa );

move_uploaded_file($_FILES["fileb"]["tmp_name"], WP_CONTENT_DIR .'/uploads/'.basename($_FILES['fileb']['name']));
$filesb = array(WP_CONTENT_DIR ."/uploads/".basename($_FILES["fileb"]["name"]));
$subject = 'Письмо с сайта файл 2';
wp_mail( $to, $subject, $message, $headers, $filesb );

@unlink($files[0]);
wp_redirect( '/?do=thanks' );

Можете ли вы подсказать, как мне преобразовать код таким образом, чтобы загнать в переменную $files сразу два файла. Если нужна дополнительная информация - готов предоставить.

 

Как вы уже поняли, у меня есть:

<input type="file" name="filea">
<input type="file" name="fileb">

 

 

  • 0

#2 Diablero

Diablero
    Topic Starter
  • Пользователь
  • 36 сообщений
  • Репутация: 6

Отправлено 19 Декабрь 2014 - 20:31

Решил проблему. Оказывается для того, чтобы добавить 2 файла в массив надо было просто написать их через запятую:

$files = array(файл1, файл2);

Цепляет нормально. Всем спасибо большое за внимание!


  • 0

#3 M-A-X

M-A-X
  • Пользователь
  • 15 сообщений
  • Репутация: 1

Отправлено 19 Февраль 2015 - 14:48

Ну и славно.

 

По константе WP_CONTENT_DIR видно, что у Вас ВордПресс, это нужно указывать в теме.

 

Потом.

Работа с загружаемыми файлами.

Разве в WP нету нормальной обработки загружаемых файлов?

А то 

move_uploaded_file($_FILES["filea"]["tmp_name"], WP_CONTENT_DIR .'/uploads/'.basename($_FILES['filea']['name']));

может поперетирать файлы...


  • 0

#4 Diablero

Diablero
    Topic Starter
  • Пользователь
  • 36 сообщений
  • Репутация: 6

Отправлено 19 Февраль 2015 - 16:19

M-A-X, что вы имеете в виду под словами "поперетирать файлы"?
Ну и конечно буду рад предоставлению примера "нормальной обработки загружаемых файлов".


  • 0

#5 M-A-X

M-A-X
  • Пользователь
  • 15 сообщений
  • Репутация: 1

Отправлено 19 Февраль 2015 - 16:24

Если загрузить файл с именем уже загруженного, то он заменит его.

 

Хотя, если отправляется письмо, то это не так и страшно, если эти файлы потом не нужно обрабатывать.

 

Если они не нужны, то их можно сразу после отправки и удалять.


  • 0


Оформление форума – IPBSkins.ru