Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Загрузка файла в форме обратной связи


Recommended Posts

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

Помогите кто знает. Как добавить на страницу /index.php?route=information/contact кнопку "Загрузить файл", который будет как приаттаченый доставляться вместе с письмом.

Спасибо.

Надіслати
Поділитися на інших сайтах


Делал такое. Только не в стандартном шаблоне. Опишу.

В файле шаблона добавить:

<div><b>Картинка</b></div>
<input type="file" name="image1" accept="image/*" value="" />
Это чтоб добавилось поле вывода картинки в контактах.

В контроллере после

if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
добавить:

@mkdir("files", 0777);
$size1 = filesize ($_FILES['image1']['tmp_name']);
copy($_FILES['image1']['tmp_name'],"files/".basename($_FILES['image1']['name']));

Формируем html-письмо

перед строкой:

$mail->setText
добавляем, например (это я так формировал, у вас будет отличаться):

$html .= (strip_tags(html_entity_decode($this->request->post['name'], ENT_QUOTES, 'UTF-8')));
$html .= "</p><p>Телефон: ";
$html .= (strip_tags(html_entity_decode($this->request->post['phone'], ENT_QUOTES, 'UTF-8')));
$html .= "</p><p>Желаемая цена: ";
$html .= (strip_tags(html_entity_decode($this->request->post['price'], ENT_QUOTES, 'UTF-8')));
$html .= " грн.</p><p>Комментарий: ";
$html .= (strip_tags(html_entity_decode($this->request->post['enquiry'], ENT_QUOTES, 'UTF-8')));
$html .= "<p><a href=путь к files".basename($_FILES['image1']['name']).">Картинка 1</a></p>"; //если в письмо вставлять картинку ссылкой;
$html .= "<img src=путь к files".basename($_FILES['image1']['name']).">"; //если вставлять картинкой;
$mail->setHtml($html);
Далее после:

if (isset($this->request->post['phone'])) {
$this->data['phone'] = $this->request->post['phone'];
} else {
$this->data['phone'] = '';
Добавить:

if (isset($this->request->post['image1'])) {
$this->data['image1'] = $this->request->post['image1'];
} else {
$this->data['image1'] = '';
}
На 100% с вашим случаем может не совпадать. Но, думаю, пинок в нужную сторону. Описано для картинки. Для любого файла - убрать accept="image/*" в input'e

Для аттача файла можно не переделывать письмо под html-версию. Тогда в формировании письма дописать что-то типа "$mail->addAttachment($this->request->post['image1']);"

  • +1 1
Надіслати
Поділитися на інших сайтах


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

Помогите кто знает. Как добавить на страницу /index.php?route=information/contact кнопку "Загрузить файл", который будет как приаттаченый доставляться вместе с письмом.

Спасибо.

Вот модуль.
Надіслати
Поділитися на інших сайтах


  • 6 months later...
  • 1 month later...
  • 11 months later...

Делал такое. Только не в стандартном шаблоне. Опишу.

В файле шаблона добавить:

<div><b>Картинка</b></div>
<input type="file" name="image1" accept="image/*" value="" />
Это чтоб добавилось поле вывода картинки в контактах.

В контроллере после

if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
добавить:

@mkdir("files", 0777);
$size1 = filesize ($_FILES['image1']['tmp_name']);
copy($_FILES['image1']['tmp_name'],"files/".basename($_FILES['image1']['name']));
Формируем html-письмо

перед строкой:

$mail->setText
добавляем, например (это я так формировал, у вас будет отличаться):

$html .= (strip_tags(html_entity_decode($this->request->post['name'], ENT_QUOTES, 'UTF-8')));
$html .= "</p><p>Телефон: ";
$html .= (strip_tags(html_entity_decode($this->request->post['phone'], ENT_QUOTES, 'UTF-8')));
$html .= "</p><p>Желаемая цена: ";
$html .= (strip_tags(html_entity_decode($this->request->post['price'], ENT_QUOTES, 'UTF-8')));
$html .= " грн.</p><p>Комментарий: ";
$html .= (strip_tags(html_entity_decode($this->request->post['enquiry'], ENT_QUOTES, 'UTF-8')));
$html .= "<p><a href=путь к files".basename($_FILES['image1']['name']).">Картинка 1</a></p>"; //если в письмо вставлять картинку ссылкой;
$html .= "<img src=путь к files".basename($_FILES['image1']['name']).">"; //если вставлять картинкой;
$mail->setHtml($html);
Далее после:

if (isset($this->request->post['phone'])) {
$this->data['phone'] = $this->request->post['phone'];
} else {
$this->data['phone'] = '';
Добавить:

if (isset($this->request->post['image1'])) {
$this->data['image1'] = $this->request->post['image1'];
} else {
$this->data['image1'] = '';
}
На 100% с вашим случаем может не совпадать. Но, думаю, пинок в нужную сторону. Описано для картинки. Для любого файла - убрать accept="image/*" в input'e

Для аттача файла можно не переделывать письмо под html-версию. Тогда в формировании письма дописать что-то типа "$mail->addAttachment($this->request->post['image1']);"

 

 

Спасибо за решение, оч. помогло

 

Вот только появились ошибки вида:

 

Warning: Cannot modify header information – headers already sent by (output started at /home

Надіслати
Поділитися на інших сайтах


Спасибо за решение, оч. помогло

 

Вот только появились ошибки вида:

 

Warning: Cannot modify header information – headers already sent by (output started at /home

 

решил проблему с Warning, добавив ob_start(); в начало файла index.php (тот что в корне)

Надіслати
Поділитися на інших сайтах


Вы еще даете возможность загружать пользователям файлы на сервер.

Ну, ну... потом не спрашивайте почему вас взломали, это только вопрос времени

Надіслати
Поділитися на інших сайтах

  • 3 weeks later...

Вы еще даете возможность загружать пользователям файлы на сервер.

Ну, ну... потом не спрашивайте почему вас взломали, это только вопрос времени

Так предложите другое решение

 

А если прописать @mkdir("files", 0766); вместо @mkdir("files", 0777); 

и поставить 766 на директорию /files/

Это решит проблему безопасности?

Надіслати
Поділитися на інших сайтах


Так предложите другое решение

 

А если прописать @mkdir("files", 0766); вместо @mkdir("files", 0777); 

и поставить 766 на директорию /files/

Это решит проблему безопасности?

 

Нет, хакер может перехватить имя файла через дыры сервера, даже не движка

Единственное решение - ссылка на сервисы  разного рода хранения файлов

Надіслати
Поділитися на інших сайтах

 

 
А как реализовать, можно рабочий пример?

 

В форме обратной связи добавить поле - ссылка на файл и всё

Для форм обратных связей можно использовать модуль SEO CMS 5 PRO

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.