Пропал блок языков на сайте (предположительно после подключения SSL)

Тема в разделе "Opencart 2", создана пользователем romeo143, 27 дек 2015.

Информация :
Внимание форумчане! При создании тем, или выкладывании какой-либо информации проверьте в какой ветке форума вы находитесь! Не путайте Opencart и Opencart2. При несоблюдении данного условия выносится соответствующее наказание! И потом не говорите что вас НЕ ПРЕДУПРЕЖДАЛИ! По возможности используйте обменники mail, yandex, google, dropbox, rghost Дабы избежать просьб перезалить и проблем с рекламой!
Постинг нескольких постов подряд приравнивается к НАРУШЕНИЮ! Будьте вежливы и соблюдайте правила ;-)
  1. romeo143

    romeo143 Постоялец

    Регистр.:
    15 авг 2015
    Сообщения:
    142
    Симпатии:
    27
    Ребята, добрый вечер! Сегодня делал правки на сайте, и сейчас обнаружил, что блок выбора языка в топе не виден. Сам див присутствует, даже если выпадающее меню делаешь видным, то можно выбрать язык и все без проблем поменяется. Но сам он пропал. Не подскажете где копать?
    В логах ошибок вот такая строка весь день
    Код:
    2015-12-27 22:14:56 - PHP Warning:  array_key_exists() [<a href='function.array-key-exists'>function.array-key-exists</a>]: The first argument should be either a string or an integer in /home/i/icearctic/VER_0.2/public_html/index.php on line 165
    Это как раз относится к языку, но что не нравится я не пойму


    Код:
    foreach ($query->rows as $result) {
        $languages[$result['code']] = $result;
    }
    
    if (isset($session->data['language']) && array_key_exists($session->data['language'], $languages)) {
        $code = $session->data['language'];
    } elseif (isset($request->cookie['language']) && array_key_exists($request->cookie['language'], $languages)) {
        $code = $request->cookie['language'];
    } else {
        $detect = '';
    
        if (isset($request->server['HTTP_ACCEPT_LANGUAGE']) && $request->server['HTTP_ACCEPT_LANGUAGE']) {
            $browser_languages = explode(',', $request->server['HTTP_ACCEPT_LANGUAGE']);
    
            foreach ($browser_languages as $browser_language) {
                foreach ($languages as $key => $value) {
                    if ($value['status']) {
                        $locale = explode(',', $value['locale']);
    
                        if (in_array($browser_language, $locale)) {
                            $detect = $key;
                            break 2;
                        }
                    }
                }
            }
        }
    Не пройдите мимо, подскажите пожалуйста
     
  2. romeo143

    romeo143 Постоялец

    Регистр.:
    15 авг 2015
    Сообщения:
    142
    Симпатии:
    27
    Захожу с чистого браузера - блок виден.
    Выбираю язык. и блок пропадает
     
  3. Q_BASIC

    Q_BASIC

    Регистр.:
    30 ноя 2013
    Сообщения:
    352
    Симпатии:
    223
    Всё же понятно. У вас в функцию проверки ключа подаётся первым параметром не тот тип данных. У вас 2 таких места. В 1 случае ключ берётся из сессии, во-втором из кук

    Идёт проверка там, есть ли такой язык (ключ) в массиве $languages
     
    romeo143 нравится это.
  4. romeo143

    romeo143 Постоялец

    Регистр.:
    15 авг 2015
    Сообщения:
    142
    Симпатии:
    27
    Не подскажете как понять, что идет не так?
    В логах только ошибка на эти строки (они аналогичны дефолтному файлу Опенкарта)
    При показе ошибок выскакивает та же ошибка
     
  5. Q_BASIC

    Q_BASIC

    Регистр.:
    30 ноя 2013
    Сообщения:
    352
    Симпатии:
    223
    var_dump($session->data['language']);

    var_dump( $request->cookie['language']);

    Перед первым if'ом поставьте, и узнаете что там. А какая конкретно строчка у вас? В данном контексте не понятно какая строчка 165
     
  6. romeo143

    romeo143 Постоялец

    Регистр.:
    15 авг 2015
    Сообщения:
    142
    Симпатии:
    27
    2015-12-28_0-42-37.png
     
  7. romeo143

    romeo143 Постоялец

    Регистр.:
    15 авг 2015
    Сообщения:
    142
    Симпатии:
    27
  8. romeo143

    romeo143 Постоялец

    Регистр.:
    15 авг 2015
    Сообщения:
    142
    Симпатии:
    27
    Проблема решилась в .htaccess
    убрал "#" в строке php_flag register_globals off
    и блок появился