2016-02-24 1 views
-1
  • добавить новый элемент в магазине перед (не клиентом дополнительного члена) Войти страницу
  • Марки и страницу регистрации для них
  • После Входа для зарегистрированных пользователей могут загрузить их логотип файловым менеджером

Мой вопрос в том, что файловый менеджер показывает все изображения в папке каталога, что противоречит политике, поскольку reg. член может видеть все изображения для папки каталога, поэтому я хочу решить это.Я хочу, чтобы отделить каталог членов регистра в файловом менеджере в имени элемента

Я хочу попытаться создать один каталог с именем участника и загрузить фотографию в этот каталог и только показать его.

Моей OpenCart версия 2.1.0.2

ответ

1

OK Я получаю решение

набор переменных в filemanager.tpl

$ ('# кнопка-загрузка') на (». нажмите», функция() { .. уаг user_id = '> данные последнего сеанса [' user_id ']>'; ..

В ControllerCommonFileManager

я функция редактирования загрузки

публичную функцию загрузки() {

if(!file_exists(DIR_IMAGE . 'catalog/user/' . $this->session->data['user_id'])) 
     mkdir(DIR_IMAGE . 'catalog/user/' . $this->session->data['user_id'] , 0777); 
    $path = DIR_IMAGE . 'catalog/user/' . $this->session->data['user_id']; 

    $this->load->language('common/filemanager'); 

    $json = array(); 

    /* // Check user has permission 
    if (!$this->user->hasPermission('modify', 'common/filemanager')) { 
     $json['error'] = $this->language->get('error_permission'); 
    } */ 

    // Make sure we have the correct directory 
    if (isset($this->request->get['directory'])) { 
     $directory = rtrim(DIR_IMAGE . 'catalog/user/' . str_replace(array('../', '..\\', '..'), '', $this->request->get['directory']), '/'); 
    } else { 
     $directory = DIR_IMAGE . 'catalog'; 
    } 
    $directory = $path; 

    // Check its a directory 
    if (!is_dir($directory)) { 
     $json['error'] = $this->language->get('error_directory'); 
    } 

    if (!$json) { 
     if (!empty($this->request->files['file']['name']) && is_file($this->request->files['file']['tmp_name'])) { 
      // Sanitize the filename 
      $filename = basename(html_entity_decode($this->request->files['file']['name'], ENT_QUOTES, 'UTF-8')); 

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

      // Allowed file extension types 
      $allowed = array(
       'jpg', 
       'jpeg', 
       'gif', 
       'png' 
      ); 

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

      // Allowed file mime types 
      $allowed = array(
       'image/jpeg', 
       'image/pjpeg', 
       'image/png', 
       'image/x-png', 
       'image/gif' 
      ); 

      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) { 
     move_uploaded_file($this->request->files['file']['tmp_name'], $directory . '/' . $filename); 

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

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

Очевидно, что если файловый менеджер показывает на переднем конце, это означает, что вы уже скопировали это файлы из соответствующих папок администратора в каталог папок.

Код администратора файлового менеджера по умолчанию написан для администратора, поэтому он отображает все файлы, но для ваших членов, вы должны добавить условие, чтобы они могли обращаться к только разрешенным папкам, как вы говорите.
Для этого измените вам catalog > controller > common > filemanager.php файл и поиск этого кода

if (isset($this->request->get['directory'])) { 
    $directory = rtrim(DIR_IMAGE . 'catalog/' . str_replace(array('../', '..\\', '..'), '', $this->request->get['directory']), '/'); 
} else { 
    $directory = DIR_IMAGE . 'catalog'; 
} 

это $directory переменная отвечает за показ этих папок. Поэтому после обновления вы можете ограничить своих членов.
Теперь вы говорили, что на основе имени будет хорошо, но я предлагаю, что сочетание имени и члена id будет хорошим, потому что одно и то же имя может вызвать ошибку!
Теперь вам нужно получить подробную информацию о вашей текущей таблице форм для входа в систему, в которой вы их сохранили. Как

$memberDetails = $this->db->query("your query")->row; 
//Assuming $memberDetails have min 2 indexes -> ['id', 'name'] 

Так что ваш filemanager.php обновленный код будет

if (isset($this->request->get['directory'])) { 
    $directory = rtrim(DIR_IMAGE . 'catalog/' . $memberDetails['id'] . $memberDetails['name'] . '/' . str_replace(array('../', '..\\', '..'), '', $this->request->get['directory']), '/'); 
} else { 
    $directory = DIR_IMAGE . 'catalog'. $memberDetails['id'] . $memberDetails['name']; 
} 
//added member details after catalog folder. 

Подобно этому вы можете добавить условия для загрузки и удаления тоже.

Примечание - Не проверял, но будет работать :)

 Смежные вопросы

  • Нет связанных вопросов^_^