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

romeo143

Гуру форума
Регистрация
15 Авг 2015
Сообщения
164
Реакции
69
Ребята, добрый вечер! Сегодня делал правки на сайте, и сейчас обнаружил, что блок выбора языка в топе не виден. Сам див присутствует, даже если выпадающее меню делаешь видным, то можно выбрать язык и все без проблем поменяется. Но сам он пропал. Не подскажете где копать?
В логах ошибок вот такая строка весь день
Код:
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 таких места. В 1 случае ключ берётся из сессии, во-втором из кук

Идёт проверка там, есть ли такой язык (ключ) в массиве $languages
 
Всё же понятно. У вас в функцию проверки ключа подаётся первым параметром не тот тип данных. У вас 2 таких места. В 1 случае ключ берётся из сессии, во-втором из кук

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

Не подскажете как понять, что идет не так?
В логах только ошибка на эти строки (они аналогичны дефолтному файлу Опенкарта)
При показе ошибок выскакивает та же ошибка
 
var_dump($session->data['language']);

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

Перед первым if'ом поставьте, и узнаете что там. А какая конкретно строчка у вас? В данном контексте не понятно какая строчка 165
 
Проблема решилась в .htaccess
убрал "#" в строке php_flag register_globals off
и блок появился
 
Назад
Сверху