Jump to content

Dodger

Клиенты
  • Content Count

    72
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Dodger

  • Rank
    Новичок
  • Birthday 08/28/1984

Контакты

  • Сайт
    http://www.dodger.ru/

Информация

  • Пол
    Мужчина
  • Город
    Москва
  • Интересы
    Moto

Recent Profile Visitors

706 profile views
  1. Добрый день. Не знаю баг это или не баг решать разработчикам. Совсем недавно хостинг Reg.ru обновлял серверные платформы и делал переносы сайтов и проблема заключалась в том, что сайт изначально работал по протоколу http , но при открытие любой новости, ссылка открывалась по протоколу https, из-за этого половина сайта не работала. Забросав тех поддержку вопросами о данной проблеме, они сначала в нее не верили, говорили, что это кэш и его надо чистить, но когда предоставили доказательства, что из разных браузеров и разных устройствах эта проблема есть, естественно они начали шевелиться... Проблема заключалась в том, что скрипты сайта не были рассчитаны на одну конфигурацию сервера. Это недочёт в скриптах, подробнее: Скрипты вашего сайта считали, что обращение к сайту производилось по HTTPS протоколу, хотя обращения было по HTTP. Причина в логике работы функции isSSL. Вот данная функция(файл /var/www/test/public_html/engine/modules/functions.php 3093 function isSSL() { 3094 if( (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') 3095 || (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') 3096 || (!empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on') 3097 || (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) 3098 || (isset($_SERVER['HTTP_X_FORWARDED_PORT']) && $_SERVER['HTTP_X_FORWARDED_PORT'] == 443) 3099 || (isset($_SERVER['REQUEST_SCHEME']) && $_SERVER['REQUEST_SCHEME'] == 'https') 3100 || (isset($_SERVER['CF_VISITOR']) && $_SERVER['CF_VISITOR'] == '{"scheme":"https"}') 3101 || (isset($_SERVER['HTTP_CF_VISITOR']) && $_SERVER['HTTP_CF_VISITOR'] == '{"scheme":"https"}') 3102 ) return true; else return false; 3103 } Пробуем вызвать данную функцию вне остального движка, что бы исключить его влияние на проблему: test@test.test3.cp.regruhosting.ru [~/public_html]# cat test.php <?php define(„DATALIFEENGINE“,true); include_once(„engine/modules/functions.php“); var_dump(isSSL()); test@test.test3.cp.regruhosting.ru [~/public_html]# Вот такой ответ получаем на выходе: :~$ curl http://www.site.ru/test.php bool(true) :~$ Функция вернула true на проверку HTTPS соединения с сайтом. Почему так произошло? - Проверяем переменную $_SERVER[„HTTPS“] которую скрипты получают от сервера: test@test.test3.cp.regruhosting.ru [~/public_html]# cat test.php <?php var_dump($_SERVER['HTTPS']); test@test.test3.cp.regruhosting.ru [~/public_html]# Получаем такой ответ: :~$ curl http://www.site.ru/test.php string(3) "Off" :~$ Возвращаемся к телу функции и видим такую проверку: 3094 if( (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') Разработчики DLE не сделали проверку на Off (речь идёт о регистре букв, тк off в php не равняется Off). Немного скорректировали данную проверку: 3094 if( (!empty($_SERVER['HTTPS']) && ( ($_SERVER['HTTPS'] !== 'off') && ($_SERVER['HTTPS'] !== 'Off'))) После этого потребовалось отчистить кэш CMS. Сделали это через удаление файлов engine/cache/system/
×
×
  • Create New...