За последние 24 часа нас посетили 70665 программистов и 37966 роботов. Сейчас ищут 1999 программистов ...

Сайт на HTTPS а тырю IMG с HTTP

Тема в разделе "PHP для новичков", создана пользователем ND, 27 мар 2017.

  1. ND

    ND Активный пользователь

    С нами с:
    8 мар 2011
    Сообщения:
    27
    Симпатии:
    1
    Добрый день или вечер).

    Может быть не совсем прямо про PHP вопрос, но думаю тут спецов хватает да и вопрос косвенно связан с PHP.

    Дело вот в чем:

    мой сайт на HTTPS ( SSL сертификат ) пытаюсь перевести по крайней мере.
    вроде все перевел ( все ссылки линкуются через HTTPS ) но на сайте есть мой "плагин" который через get_contents тырит картинки с сайта на котором нет этого самого HTTPS в итоге мой сайт будет выдавать INSECURE предупреждения.

    Что мне делать в данной ситуации? Как мне сделать так чтоб картинки с сайта HTTP были как будто с HTTPS?
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.543
    Симпатии:
    623
    Прям таки картинки тырит, или урлы?
     
  3. ND

    ND Активный пользователь

    С нами с:
    8 мар 2011
    Сообщения:
    27
    Симпатии:
    1
    урлы на картинки да
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.543
    Симпатии:
    623
    Никак =)
     
  5. ND

    ND Активный пользователь

    С нами с:
    8 мар 2011
    Сообщения:
    27
    Симпатии:
    1
    http://dark-world.ru/scripts/resize/?z=200&file=/files/covers/1669/166931.jpg

    я вставил сюда вот эту картинку, когда вставлял, в браузере появился значок insecure, но как только добавил, движок форума какую то либо proxy к ней пришвартовал и ок. Значит получается есть какой то способ веселый
    --- Добавлено ---
    [​IMG]

    как мне такое же решение сделать на своем сайте? Т.е движок этого форума оборачивает ее как то и все ок, сайт не выдает INSECURE. Хотя картинка грузится по сути с HTTP.
     
  6. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.543
    Симпатии:
    623
    @ND этот скрипт качает сами картинки и кэширует на php.ru
    --- Добавлено ---
    у неё url proxy.php?image=http%3A%2F%2Fdark-world.ru%2Fscripts%2Fresize%2F%3Fz%3D200%26file%3D%2Ffiles%2Fcovers%2F1669%2F166931.jpg&hash=c57c86c61715c9f5349bdde3f14854e7
     
  7. ND

    ND Активный пользователь

    С нами с:
    8 мар 2011
    Сообщения:
    27
    Симпатии:
    1
    хм мне кажется он не качает картинки, а делает примерно так же как тут:

    http://stackoverflow.com/questions/765779/how-to-display-non-ssl-images-on-https-connection

    в итоге я воспользовался кодом со 2 поста, все работает вроде) картинки теперь с моего сайта выдаются как https'совые без сохранения их у себя, вроде ок, правда не знаю на много ли нагрузка от такого скрипта возрастет.
     
  8. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.543
    Симпатии:
    623
    @ND это решение 1000 раз скачает картинку для 1000 пользователей, вместо того чтобы скачать 1 раз.
    Любое подобное решение не оптимально.
     
  9. ND

    ND Активный пользователь

    С нами с:
    8 мар 2011
    Сообщения:
    27
    Симпатии:
    1
    @[vs] что значит скачать 1000 раз? Ну в любом случае же для 1000 пользователей будет 1000 раз скачиваться, только вопрос откуда:

    из своего сервера
    либо из удаленного? ( как в данном случае )

    я немного нуб ( я по фронт энду больше ), может ересь несу. Но как она может 1 раз скачиваться для 1000 пользователей?
     
  10. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.151
    Симпатии:
    108
    Адрес:
    Украина
    Суть не в пользователе. Суть в сервере. Для пользователя всё равно откуда качать. А серверу проще 1 раз скачать, чем 1000.
     
  11. ND

    ND Активный пользователь

    С нами с:
    8 мар 2011
    Сообщения:
    27
    Симпатии:
    1
    ясено спасибо, суть понял, в любом случае делей будет меньше если отдавать со своего сервера минуя "лишние" внешние запросы., т.е я так понимаю file_get_contents в любом случае обращается скачивает во "временное хранилище" каждый раз, поэтому лучше самому создать "хранилище" с этими картинками и сразу отдавать со своего сервера.


    меня вот такой момент еще интересует интересует (хотелось бы разобраться с заголовками ):

    PHP:
    1.       $strFile = base64_decode(@$_GET['url']);
    2.         $strFileExt = end(explode('.' , $strFile));
    3.         if($strFileExt == 'jpg' or $strFileExt == 'jpeg'){
    4.             header('Content-Type: image/jpeg');
    5.         }elseif($strFileExt == 'png'){
    6.             header('Content-Type: image/png');
    7.         }elseif($strFileExt == 'gif'){
    8.             header('Content-Type: image/gif');
    9.         }else{
    10.             die('not supported');
    11.         }
    12.         if($strFile != ''){
    13.             $cache_expire = 60*60*24*365;
    14.             header("Pragma: public");
    15.             header("Cache-Control: maxage=". $cache_expire);
    16.             header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $cache_expire).' GMT');
    17.  
    18.  
    19.             //... [and get the content using curl or file_get_contents and echo it out ]
    20.             $myimg=file_get_contents($strFile);
    21.             echo ($myimg);
    22.  
    23.  
    24.         }
    25.         exit;
    зачем тут вообще эти заголовки добавляются? вроде этого:
    header('Content-Type: image/jpeg');

    я пробовал менять его вообще на левый:
    header('Content-Type: application/zip');

    и все работает, в чем их смысловая нагрузка?
     
  12. ND

    ND Активный пользователь

    С нами с:
    8 мар 2011
    Сообщения:
    27
    Симпатии:
    1
    ребят вопрос в силе) Помогите пожалуйста разобраться, есть ли смысл заголовков в этом коде ? Почему и без них работает? Зачем они тут тогда? ( чисто для себя понять )
     
  13. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.543
    Симпатии:
    623
    @ND работает по той причине что протокол декларирует, но не обязывает. Соблюдение протокола гарантирует корректную работу. Нарушение протокола не означает, что в конкретной ситуации что то перестанет работать.