kossik Posted June 28, 2018 Report Share Posted June 28, 2018 Добрый день.Обнаружил, что изображения, ссылка на которые идет на 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] Quote Link to post Share on other sites
kycher Posted June 29, 2018 Report Share Posted June 29, 2018 (edited) Доброго дняВ 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! Спасибо за направление на путь истинный) Edited June 29, 2018 by kycher Quote Link to post Share on other sites
Solution kossik Posted June 29, 2018 Author Solution Report Share Posted June 29, 2018 (edited) Решение нашлось! 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)Ну это по желанию, суть не меняется Edited June 29, 2018 by kossik Quote Link to post Share on other sites
Noxter Posted June 29, 2018 Report Share Posted June 29, 2018 Забыли про ftp, решение можно упростить через фильтр валидатор. Quote Link to post Share on other sites
kossik Posted June 29, 2018 Author Report Share Posted June 29, 2018 Забыли про ftp, решение можно упростить через фильтр валидатор.Спасибо за подсказку! Отличный вариант, даже не подумал о нем.filter_var($source_file, FILTER_VALIDATE_URL) Quote Link to post Share on other sites
Noxter Posted June 29, 2018 Report Share Posted June 29, 2018 Спасибо за подсказку! Отличный вариант, даже не подумал о нем.filter_var($source_file, FILTER_VALIDATE_URL)Всё верно. Quote Link to post Share on other sites
Morfeus Posted February 17, 2019 Report Share Posted February 17, 2019 Большое спасибо тебе мил человек (Kossik), все работает) Quote Link to post Share on other sites
Tarasbulba Posted July 16, 2020 Report Share Posted July 16, 2020 Спасибо за подсказку! Отличный вариант, даже не подумал о нем.filter_var($source_file, FILTER_VALIDATE_URL)а куда валидатор вставлять в какой файл? Quote Link to post Share on other sites
krasafcheg Posted July 18, 2020 Report Share Posted July 18, 2020 Братцы куда filter_var($source_file, FILTER_VALIDATE_URL) добавлять Quote Link to post Share on other sites
phukortsin Posted July 19, 2020 Report Share Posted July 19, 2020 Лучше всего никуда не добавлять. Потому что если добавлять, то по-хорошему еще добавочно надо код переделывать существенно. Особых преимуществ не даст, но может создать проблемы, например, будет определять адрес 'ttttttt://example.com/' как валидный. Quote Link to post Share on other sites
krasafcheg Posted July 19, 2020 Report Share Posted July 19, 2020 Лучше всего никуда не добавлять. Потому что если добавлять, то по-хорошему еще добавочно надо код переделывать существенно. Особых преимуществ не даст, но может создать проблемы, например, будет определять адрес 'ttttttt://example.com/' как валидный.тогда какое лекарство по добавлению фоток через https Quote Link to post Share on other sites
phukortsin Posted July 19, 2020 Report Share Posted July 19, 2020 Оно в теме и написано в #3. Правда, работать будет не на всех серверах.По-хорошему надо дорабатывать посущественнее, с использованием CURL. Но бесплатно такое вряд ли кто выложит... Quote Link to post Share on other sites
krasafcheg Posted July 20, 2020 Report Share Posted July 20, 2020 Оно в теме и написано в #3. Правда, работать будет не на всех серверах.По-хорошему надо дорабатывать посущественнее, с использованием CURL. Но бесплатно такое вряд ли кто выложит...так и платного решения найти не могу, на 1 сайте лежит за 350 рублей, но там написано что за работоспособность не отвечают, может есть у кого хоть платный вариант.... ? Quote Link to post Share on other sites
sergeevizh Posted July 20, 2020 Report Share Posted July 20, 2020 (edited) Заменяем В api/Image.php... // Если файл удаленный (http://), зальем его себе if (preg_match("~^https?://~", $source_file)) {...В api/Design.php... if (preg_match("~^https?://~", $resized_filename_encoded)) { $resized_filename_encoded = rawurlencode($resized_filename_encoded); }...Плюс Файл simpla\ProductAdmin.php Меняем строкуif(!empty($url) && $url != 'http://' && strstr($url,'/')!==false) Наif(!empty($url) && $url != 'http://' && $url != 'https://' && strstr($url,'/')!==false) Оригинал: https://qna.habr.com/q/542206 Edited July 20, 2020 by alexivchenko Quote Link to post Share on other sites
krasafcheg Posted July 21, 2020 Report Share Posted July 21, 2020 ЗаменяемВ api/Image.php...// Если файл удаленный (http://), зальем его себеif (preg_match("~^https?://~", $source_file)) {...В api/Design.php...if (preg_match("~^https?://~", $resized_filename_encoded)) {$resized_filename_encoded = rawurlencode($resized_filename_encoded);}...ПлюсФайл simpla\ProductAdmin.php Меняем строкуif(!empty($url) && $url != 'http://' && strstr($url,'/')!==false) Наif(!empty($url) && $url != 'http://' && $url != 'https://' && strstr($url,'/')!==false) Оригинал: https://qna.habr.com/q/542206 Alex спасибо за предложенное решение, можно поподробнее с api/Design.php, там два места с кодом http, сделал все по инструкции, пробовал менять с одном месте и в двух, эффекта загрузки нет, появляется пустая картинка ведущая на 404 ЗаменяемВ api/Image.php...// Если файл удаленный (http://), зальем его себеif (preg_match("~^https?://~", $source_file)) {...В api/Design.php...if (preg_match("~^https?://~", $resized_filename_encoded)) {$resized_filename_encoded = rawurlencode($resized_filename_encoded);}...ПлюсФайл simpla\ProductAdmin.php Меняем строкуif(!empty($url) && $url != 'http://' && strstr($url,'/')!==false) Наif(!empty($url) && $url != 'http://' && $url != 'https://' && strstr($url,'/')!==false) Оригинал: https://qna.habr.com/q/542206нет случаем файлов "под замену", с меня пиво =D Quote Link to post Share on other sites
sergeevizh Posted July 21, 2020 Report Share Posted July 21, 2020 (edited) Alex спасибо за предложенное решение, можно поподробнее с api/Design.php, там два места с кодом http, сделал все по инструкции, пробовал менять с одном месте и в двух, эффекта загрузки нет, появляется пустая картинка ведущая на 404 нет случаем файлов "под замену", с меня пиво =Dhttps://github.com/pikusov/Simpla/blob/9fefafa38dc739b4348b4a2940cba8bc8e4363ed/api/Design.php#L213Код на линиях 213 и 214 заменить На if (preg_match("~^https?://~", $resized_filename_encoded)) {$resized_filename_encoded = rawurlencode($resized_filename_encoded);} Edited July 21, 2020 by alexivchenko Quote Link to post Share on other sites
Noxter Posted July 21, 2020 Report Share Posted July 21, 2020 https://github.com/pikusov/Simpla/blob/9fefafa38dc739b4348b4a2940cba8bc8e4363ed/api/Design.php#L213 Код на линиях 213 и 214 заменить На if (preg_match("~^https?://~", $resized_filename_encoded)) { $resized_filename_encoded = rawurlencode($resized_filename_encoded); }Регулярка будет тяжелее, лучше не использовать. Quote Link to post Share on other sites
phukortsin Posted July 21, 2020 Report Share Posted July 21, 2020 Alex спасибо за предложенное решение, можно поподробнее с api/Design.php, там два места с кодом http, сделал все по инструкции, пробовал менять с одном месте и в двух, эффекта загрузки нет, появляется пустая картинка ведущая на 404 Решение, которое предложил alexivchenko, мало отличается от #3 в этой теме, поэтому получить от него какой-то положительный эффект очень маловероятно. Это как раз тот случай, когда "за работоспособность не отвечают", ибо оно по объективным причинам чаще не работает... Quote Link to post Share on other sites
Tarasbulba Posted July 23, 2020 Report Share Posted July 23, 2020 на версии 2.1.5 не заработало. Quote Link to post Share on other sites
sergeevizh Posted July 23, 2020 Report Share Posted July 23, 2020 Странно, что у кого-то не работает...Версия 2.3.8Ставил на 4 сайта, работает загрузка при импорте, загрузка при добавлении из админ. панели. Quote Link to post Share on other sites
Tarasbulba Posted July 23, 2020 Report Share Posted July 23, 2020 Странно, что у кого-то не работает...Версия 2.3.8Ставил на 4 сайта, работает загрузка при импорте, загрузка при добавлении из админ. панели.да на двух версиях более старших все ок. на 2.1.5 не хочет подгружать. Quote Link to post Share on other sites
phukortsin Posted July 23, 2020 Report Share Posted July 23, 2020 Странно, что у кого-то не работает...Версия 2.3.8Ставил на 4 сайта, работает загрузка при импорте, загрузка при добавлении из админ. панели. Если Вы посмотрите хоть чуть внимательно документацию, то уже не будет ничего странного:https://php.ru/manual/function.fopen.html Quote Link to post Share on other sites
Tarasbulba Posted July 23, 2020 Report Share Posted July 23, 2020 Если Вы посмотрите хоть чуть внимательно документацию, то уже не будет ничего странного:https://php.ru/manual/function.fopen.htmlпрочитал ничего не понял )) да на двух версиях более старших все ок. на 2.1.5 не хочет подгружать.кто нибудь помогите понять почему на 2.1.5 не работает допил https Quote Link to post Share on other sites
sergeevizh Posted July 23, 2020 Report Share Posted July 23, 2020 прочитал ничего не понял )) кто нибудь помогите понять почему на 2.1.5 не работает допил httpsУ меня нет архива 2.1.5 так бы подсказал Quote Link to post Share on other sites
Tarasbulba Posted July 23, 2020 Report Share Posted July 23, 2020 У меня нет архива 2.1.5 так бы подсказалотправил файлы которые в инструкции в личку. Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.