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

Кнопка загрузки файлов в форме работает только на одном языке


Recommended Posts

Я добавил кнопку для загрузки файлов в форму обратной связи на странице контакты.

789734083_2020-10-29165936.thumb.png.33efbf167785684f89207d2d8c69474b.png

 

 

Однако файлы загружаются только на одной версии сайта, а на другой нет.

1767422627_2020-10-29170004.thumb.png.c6d584f0c59369f8827d4ca8028695ef.png

 

 

 

Вод код который я вносил:
information/contact.twig:

Спойлер

<div class="form-group required">
  <label class="col-sm-2 control-label">{{ text_select_file }}</label>
  <div class="col-sm-10">
    <button type="button" id="button-upload" data-loading-text="{{ text_loading }}" class="btn btn-default btn-block">
      <i class="fa fa-upload"></i>{{ text_upload_file }}
    </button>
    <input type="hidden" name="file" value="" />
    <span class="success"></span>
  </div>
</div>

и вставил js сюда же:

 

 

 

controller/information/contact.php:

Спойлер

Создал функцию upload
 


public function upload() {
$this->load->language('tool/upload');

$json = array();

if (!empty($this->request->files['file']['name']) && is_file($this->request->files['file']['tmp_name'])) {
// Sanitize the filename
$filename = $this->request->files['file']['name'];

// Validate the filename length
if ((utf8_strlen($filename) < 3) || (utf8_strlen($filename) > 64)) {
  $json['error'] = $this->language->get('error_filename');
  }

  // Allowed file extension types
  $allowed = array();

  $extension_allowed = preg_replace('~\r?\n~', "\n", $this->config->get('config_file_ext_allowed'));

  $filetypes = explode("\n", $extension_allowed);

  foreach ($filetypes as $filetype) {
  $allowed[] = trim($filetype);
  }

  if (!in_array(strtolower(substr(strrchr($filename, '.'), 1)), $allowed)) {
  $json['error'] = $this->language->get('error_filetype');
  }

  // Allowed file mime types
  $allowed = array();

  $mime_allowed = preg_replace('~\r?\n~', "\n", $this->config->get('config_file_mime_allowed'));

  $filetypes = explode("\n", $mime_allowed);

  foreach ($filetypes as $filetype) {
  $allowed[] = trim($filetype);
  }

  if (!in_array($this->request->files['file']['type'], $allowed)) {
  $json['error'] = $this->language->get('error_filetype');
  }

  // Check to see if any PHP files are trying to be uploaded
  $content = file_get_contents($this->request->files['file']['tmp_name']);

  if (preg_match('/\<\?php/i', $content)) {
    $json['error'] = $this->language->get('error_filetype');
    }

    // Return any upload error
    if ($this->request->files['file']['error'] != UPLOAD_ERR_OK) {
    $json['error'] = $this->language->get('error_upload_' . $this->request->files['file']['error']);
    }
    } else {
    $json['error'] = $this->language->get('error_upload');
    }

    if (!$json) {
    $json['file'] = $file = $filename;

    move_uploaded_file($this->request->files['file']['tmp_name'], DIR_UPLOAD . $file);

    // Hide the uploaded file name so people can not link to it directly.
    $this->load->model('tool/upload');

    $json['code'] = $this->model_tool_upload->addUpload($filename, $file);

    $json['success'] = $this->language->get('text_upload');
    }

    $this->response->addHeader('Content-Type: application/json');
    $this->response->setOutput(json_encode($json));
    }


И ещё добавил код перед $mail->send();


if(isset($this->request->post['file'])){
$mail->addAttachment(DIR_UPLOAD.$this->request->post['file']);
}

 

 

Но, как я уже писал выше, файлы загружаются только на одном языке. Подскажите пожалуйста что изменить. И заранее спасибо за помощь)))

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


1 час назад, Teref сказал:

так тогда и в форум на локалке писать надо. здесь все равно никто не знает тк тут в основном сидят продавцы кода

Насмешили) А вы, наверно, знаете ответ на вопрос ТС. Может поделитесь? Или это демонстрация обиды на то, что сами остались в соседней теме без ответа?

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

1 час назад, comrues сказал:

Сайт на локалке

В таком случае могу лишь предположить, что дополнительный язык в вашей системе добавляет себя в url и получается что-то типа https://vash.site.com/en/page. Ну и форма в таком случае отправляется по адресу с языком. В результате сервер отдает ответ 404. Часто такое встречал с мультиязычными сайтами. Это, уточню, предположение

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

7 минут назад, Teref сказал:

скажу вам так на кривом заюбагованном ОС может быть что угодно и это тоже самособой

Кривые и забагованные, как правило, модули и руки разработчиков, которые их пишут

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

4 часа назад, DariyGRAY сказал:

В таком случае могу лишь предположить, что дополнительный язык в вашей системе добавляет себя в url и получается что-то типа https://vash.site.com/en/page. Ну и форма в таком случае отправляется по адресу с языком. В результате сервер отдает ответ 404. Часто такое встречал с мультиязычными сайтами. Это, уточню, предположение

Да, Именно, так. у меня сайт и выводится - sitename.es и sitename.es/ru (использую для этого плагин SEO мультиязык / мультирегион)
Что мне в этом случае стоит изменить?
PS: Огромное спасибо, что отвечаете на мои вопросы.

Змінено користувачем comrues
Надіслати
Поділитися на інших сайтах


1 час назад, comrues сказал:

Да, Именно, так. у меня сайт и выводится - sitename.es и sitename.es/ru (использую для этого плагин SEO мультиязык / мультирегион)
Что мне в этом случае стоит изменить?
PS: Огромное спасибо, что отвечаете на мои вопросы.

 

Самый простой способ проверить мое предположение вслепую - в шаблоне information/contact.twig заменить

<form action="{{ action }}" method="post" enctype="multipart/form-data" class="form-horizontal">

на

<form action="https://YOUR-SITE.COM/index.php?route=information/contact" method="post" enctype="multipart/form-data" class="form-horizontal">

{{ action }} меняете на адрес без языка. Если предположение подтвердится, то что делать дальше, думаю, разберетесь

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

6 часов назад, DariyGRAY сказал:

В таком случае могу лишь предположить, что дополнительный язык в вашей системе добавляет себя в url и получается что-то типа https://vash.site.com/en/page. Ну и форма в таком случае отправляется по адресу с языком. В результате сервер отдает ответ 404. Часто такое встречал с мультиязычными сайтами. Это, уточню, предположение

Пока что понял что происходит редирект 301

698021838_2020-10-30182606.thumb.png.aa7ed9ee9c4263e3888d3d91a85f29e9.png

 

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


23 минуты назад, DariyGRAY сказал:

 

Самый простой способ проверить мое предположение вслепую - в шаблоне information/contact.twig заменить


<form action="{{ action }}" method="post" enctype="multipart/form-data" class="form-horizontal">

на


<form action="https://YOUR-SITE.COM/index.php?route=information/contact" method="post" enctype="multipart/form-data" class="form-horizontal">

{{ action }} меняете на адрес без языка. Если предположение подтвердится, то что делать дальше, думаю, разберетесь

Пробовал. Нечего не поменялось, к сожалению.
В php контроллере в самом начале есть условие
if (!empty($this->request->files['file']['name']) && is_file($this->request->files['file']['tmp_name']))
если оно не выполняется то в переменную записывается сообщение об ошибке
$json['error'] = $this->language->get('error_upload');
а в js проверяется ,если есть переменная json['error'], то выводит ошибку.
Т.е. по ходу файл вообще почему то не загружается и делает редирект

Змінено користувачем comrues
Надіслати
Поділитися на інших сайтах


7 минут назад, comrues сказал:

Пока что понял что происходит редирект 301

698021838_2020-10-30182606.thumb.png.aa7ed9ee9c4263e3888d3d91a85f29e9.png

 

Так а что в ответе вы видите? Там же в консоле можно посмотреть что сервер отвечает

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

Там бы разобраться почему редирект происходит. Сначала вы обращаетесь по адресу с post-запросом, вас перенаправляет и запрос уже становится get-запросом. А при таком условии вы файл не отправите

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

2 часа назад, DariyGRAY сказал:

Так а что в ответе вы видите? Там же в консоле можно посмотреть что сервер отвечает

В консоли пусто (если мы говорим про ту консоль в которой можно вывести в js через console.log).

а если смотреть, что передаётся в итоге после редиректа, то это сообщение об ошибке:

2045927853_2020-10-30204539.thumb.png.367c744029dc1699ab1f239db5d71bbf.png

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


В 30.10.2020 в 18:41, DariyGRAY сказал:

Там бы разобраться почему редирект происходит. Сначала вы обращаетесь по адресу с post-запросом, вас перенаправляет и запрос уже становится get-запросом. А при таком условии вы файл не отправите

Я выяснил, что редирект происходит из-за SeoPro. Но у меня не получается разобраться как это исправить. Быть может вы мне подскажите? Заранее огромное спасибо!

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


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

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

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

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

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

Вхід

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

Вхід зараз
×
×
  • Створити...

Important Information

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