sergeevizh Posted November 12, 2018 Report Share Posted November 12, 2018 Подскажите как сделать импорт картинок с https При стандартном импорте получается так http://localhost/simpla2/files/products/https%3A%2F%2Fsite.ru%2Ffiles%2Fproducts%2F9793.970.800x600.800x600w.jpg?4cb37d4302fd6f1de53a7ab16a277a0e В файле api/Image.php Изменил строчку // Если вайл удаленный (http://), зальем его себе if(substr($source_file, 0, 7) == 'https://' || substr($source_file, 0, 8) == 'http://') Никаких изменений. Quote Link to post Share on other sites
simpla24 Posted November 12, 2018 Report Share Posted November 12, 2018 Мне удавалось выкачивать картинки так:- файл image.php я не менял- ссылку на картинку делал http Попробуйте Quote Link to post Share on other sites
phukortsin Posted November 13, 2018 Report Share Posted November 13, 2018 Смотритеhttp://forum.simplacms.ru/topic/13613-%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0-%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9-%D1%81-https-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%BE%D0%B2/?p=106629Но то решение работает не всегда, зависит от конфигурации сервера своего и сервера удаленного. По хорошему, надо программировать аккуратнее, используя CURL. Quote Link to post Share on other sites
sergeevizh Posted November 13, 2018 Author Report Share Posted November 13, 2018 Смотритеhttp://forum.simplacms.ru/topic/13613-%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0-%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9-%D1%81-https-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%BE%D0%B2/?p=106629Но то решение работает не всегда, зависит от конфигурации сервера своего и сервера удаленного. По хорошему, надо программировать аккуратнее, используя CURL. Спасибо, помогло! Quote Link to post Share on other sites
Noxter Posted November 13, 2018 Report Share Posted November 13, 2018 Подскажите как сделать импорт картинок с https При стандартном импорте получается так http://localhost/simpla2/files/products/https://site.ru/files/products/9793.970.800x600.800x600w.jpg?4cb37d4302fd6f1de53a7ab16a277a0e В файле api/Image.php Изменил строчку // Если вайл удаленный (http://), зальем его себе if(substr($source_file, 0, 7) == 'https://' || substr($source_file, 0, 8) == 'http://') Никаких изменений. Думаю так будет куда проще и правильней т.к. нет ограничений по протоколам: if(filter_var($source_file, FILTER_VALIDATE_URL)) { ... } Quote Link to post Share on other sites
phukortsin Posted November 14, 2018 Report Share Posted November 14, 2018 Думаю так будет куда проще и правильней т.к. нет ограничений по протоколам: if(filter_var($source_file, FILTER_VALIDATE_URL)) { ... } Совсем не очевидно, что будет лучше. Вопрос очень даже спорный. Например, для явно ошибочного значения source_file='mmm://ff.png' условие будет истинно. Появится битая ссылка на картинку. Quote Link to post Share on other sites
Noxter Posted November 14, 2018 Report Share Posted November 14, 2018 Совсем не очевидно, что будет лучше. Вопрос очень даже спорный. Например, для явно ошибочного значения source_file='mmm://ff.png' условие будет истинно. Появится битая ссылка на картинку. Только в том случае если такие уникалы как ты будут так именовать файлы. А вообще спасибо, я проверю. Quote Link to post Share on other sites
phukortsin Posted November 14, 2018 Report Share Posted November 14, 2018 Только в том случае если такие уникалы как ты будут так именовать файлы. А вообще спасибо, я проверю. В программировании давным-давно принято проверять входные данные максимально полно. Это объективное требование - потому как обычно пользователей разных много, и ошибок, которые они могут совершить и реально совершают - море бескрайнее... А надеяться на правильные данные - программистом не быть. Или быть откровенно негодящим, давно морально устаревшим... Quote Link to post Share on other sites
Noxter Posted November 14, 2018 Report Share Posted November 14, 2018 В программировании давным-давно принято проверять входные данные максимально полно. Это объективное требование - потому как обычно пользователей разных много, и ошибок, которые они могут совершить и реально совершают - море бескрайнее... А надеяться на правильные данные - программистом не быть. Или быть откровенно негодящим, давно морально устаревшим...https://code-live.ru/post/php-url-validation/ Quote Link to post Share on other sites
phukortsin Posted November 14, 2018 Report Share Posted November 14, 2018 https://code-live.ru/post/php-url-validation/ По ссылке как раз и говорится "Не забывайте должным образом обрабатывать данные, пришедшие от пользователя..." Там нигде не сказано - пишите в инструкции к своим разраработкам - мол, прежде чем использовать, обратитесь к специалисту с большими скилами, чтобы он проверил - уникал Вы или не уникал и дал заключение, можно ли Вам использовать разработку и нет ли противопоказаний... Quote Link to post Share on other sites
Noxter Posted November 14, 2018 Report Share Posted November 14, 2018 По ссылке как раз и говорится "Не забывайте должным образом обрабатывать данные, пришедшие от пользователя..." Там нигде не сказано - пишите в инструкции к своим разраработкам - мол, прежде чем использовать, обратитесь к специалисту с большими скилами, чтобы он проверил - уникал Вы или не уникал и дал заключение, можно ли Вам использовать разработку и нет ли противопоказаний...Вован сходи к мозгоправу у тебя с головой проблемы при чём серьезные! Quote Link to post Share on other sites
Noxter Posted September 25, 2019 Report Share Posted September 25, 2019 Думаю так будет куда проще и правильней т.к. нет ограничений по протоколам: if(filter_var($source_file, FILTER_VALIDATE_URL)) { ... } Сегодня столкнулся с проблемой заливки картинок с кириллического домена, такая проверка не учитывает такие домены, а по этому заливаться картинка не будет.Также нужно переделывать функцию download_image, вот небольшой набросок через CURL: $res = parse_url($filename); $filename = idn_to_ascii($res['host']).$res['path']; $ch = curl_init(); curl_setopt($ch, CURLOPT_AUTOREFERER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $filename); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); $data = curl_exec($ch); file_put_contents($this->config->root_dir.$this->config->original_images_dir.$new_name, $data); curl_close($ch); Может кому пригодиться 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.