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


Фото
- - - - -

Загрузка изображений с https серверов


Best Answer kossik , 29.06.2018 - 17:11

Решение нашлось!

 

1. Файл simpla\simpla_source\api\Design.php

Меняем строку

if(substr($resized_filename_encoded, 0, 7) == 'http://')

на

if(substr($resized_filename_encoded, 0, 7) == 'http://' || substr($resized_filename_encoded, 0, 8) == 'https://')

2. Файл simpla\simpla_source\simpla\ProductAdmin.php

Меняем строку

if(!empty($url) && $url != 'http://' && strstr($url,'/')!==false)

на

if(!empty($url) && $url != 'http://' && $url != 'https://' && strstr($url,'/')!==false)

3. Файл simpla\simpla_source\api\Image.php

Меняем строку

if(substr($source_file, 0, 7) == 'http://')

на

if(substr($source_file, 0, 7) == 'http://' || substr($source_file, 0, 8) == 'https://')

 

Все! Теперь изображения загружаются и из под админки и из БД, в случае импортированных товаров

Так же можно вместо проверки поставить вот так, например: preg_match("~^https?://~", $source_file)

Ну это по желанию, суть не меняется

Перейти к посту


  • Чтобы отвечать, сперва войдите на форум
5 ответов в теме

#1 kossik

kossik
  • Пользователь
  • 36 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Санкт-Петербург

Опубликовано 28.06.2018 - 14:16

Добрый день.

Обнаружил, что изображения, ссылка на которые идет на https сервера не загружаются.

В этом случае функция resize вообще не запускается, так же как и не заходит в файл resize.php

 

Проблема в редиректе? Или в скрипте, который выводит изображения в шаблон?

 

Редирект в настоящее время выглядит вот так:

# Ресайз картинок на лету
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^files/products/(.+) resize/resize.php?file=$1&token=%{QUERY_STRING}
RewriteCond %{THE_REQUEST} ^GET\ (.*)files/products/(.*)\?([A-z0-9]*) 
RewriteRule ^files/products/(.+) resize/resize.php?file=%2&token=%3 [L,NE]

 



#2 kycher

kycher
  • Пользователь
  • 2 сообщений
  • Дизайн, Программирование, Верстка, Заказчик
  • Версия CMS:2.x

Опубликовано 29.06.2018 - 13:48

Доброго дня


В cms simplacms в стандартной, даже последней версии, не загружаются
изображения товара через "загрузить из интернета" по url начинающимся с https://,
в базу данных пишется путь с https, фото не загружается в папку, те
происходит в функции которая отвечает за добавление товара где обработка
события по "add_image_url" или прерывание на передаче и обрезке url для
последующего сохранения файла и записи в базу имени изображения.


Обычные файлы поправить не получилось;( (simpla/ProductAdmin.php , simpla/design/html/product.tpl)

Предполагаю что дело вообще в обработчике, скорее всего в файле api/Request.php


в simpla/design/html/product.tpl есть строки описывающие изменение на https не помогло

 

// Или с URL $('#add_image_url').click(function() { $("<input class='remote_image' name=images_urls[] type=text value='http://'>").appendTo('div#add_image').focus().select(); });  

 




в simpla/ProductAdmin.php есть строки, тоже изменение не помогло.

 

// Загрузка изображений из интернета          if($images = $this->request->post('images_urls'))          { foreach($images as $url) { if(!empty($url) && $url != 'http://')             $this->products->add_image($product->id, $url); } } $images = $this->products->get_images(array('product_id'=>$product->id));  

 




Не загружаются url с https на картинку. Help! Спасибо за направление на путь истинный)

Изменено: kycher, 29.06.2018 - 13:48


#3 kossik

kossik
  • Пользователь
  • 36 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Санкт-Петербург

Опубликовано 29.06.2018 - 17:11   Best Answer

Решение нашлось!

 

1. Файл simpla\simpla_source\api\Design.php

Меняем строку

if(substr($resized_filename_encoded, 0, 7) == 'http://')

на

if(substr($resized_filename_encoded, 0, 7) == 'http://' || substr($resized_filename_encoded, 0, 8) == 'https://')

2. Файл simpla\simpla_source\simpla\ProductAdmin.php

Меняем строку

if(!empty($url) && $url != 'http://' && strstr($url,'/')!==false)

на

if(!empty($url) && $url != 'http://' && $url != 'https://' && strstr($url,'/')!==false)

3. Файл simpla\simpla_source\api\Image.php

Меняем строку

if(substr($source_file, 0, 7) == 'http://')

на

if(substr($source_file, 0, 7) == 'http://' || substr($source_file, 0, 8) == 'https://')

 

Все! Теперь изображения загружаются и из под админки и из БД, в случае импортированных товаров

Так же можно вместо проверки поставить вот так, например: preg_match("~^https?://~", $source_file)

Ну это по желанию, суть не меняется


Изменено: kossik, 29.06.2018 - 17:13


#4 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 696 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 29.06.2018 - 18:10

Забыли про ftp, решение можно упростить через фильтр валидатор.

#5 kossik

kossik
  • Пользователь
  • 36 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Санкт-Петербург

Опубликовано 29.06.2018 - 19:05

Забыли про ftp, решение можно упростить через фильтр валидатор.

Спасибо за подсказку! Отличный вариант, даже не подумал о нем.

filter_var($source_file, FILTER_VALIDATE_URL)



#6 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 696 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 29.06.2018 - 19:25

Спасибо за подсказку! Отличный вариант, даже не подумал о нем.
filter_var($source_file, FILTER_VALIDATE_URL)

Всё верно.




0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых