0 Пользователей и 1 Гость просматривают эту тему.
  • 0 Ответов
  • 289 Просмотров
*

dmitry_stas

  • Профи
  • 10056
  • 954
Исходные данные: в Opera периодически слетает аутентификация юзера, несмотря на то, что Запомнить меня исправно отмечается при логине.

Описание логики: плагин пытается найти файл кук с информацией о данных юзера для логина. Имя этого файла отдает JUserHelper::getShortHashedUserAgent()
Код: php
public static function getShortHashedUserAgent()
{
$ua = JFactory::getApplication()->client;
$uaString = $ua->userAgent;
$browserVersion = $ua->browserVersion;
$uaShort = str_replace($browserVersion, 'abcd', $uaString);

return md5(JUri::base(). $uaShort);
}

Описание проблемы: как видно из вышеприведенного кода, имя файла генерируется как md5 из адреса сайта и заголовка userAgent браузера юзера, в котором версия браузера заменена на строку 'abcd'. Эта замена сделана для того, чтобы обновление браузера не влияло на генерацию, и возвращаемое значение было одинаково не зависимо то того, 19-я версия или 30-я. Однако, Opera :) В Opera мы имеем вот такую штуку:
Цитата: print_r($ua)
JApplicationWebClient Object ( [platform:protected] => [mobile:protected] => [engine:protected] => [browser:protected] => 19 [browserVersion:protected] => 45.0.2454.85 [languages:protected] => Array ( ) [encodings:protected] => Array ( ) [userAgent:protected] => Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36 OPR/32.0.1948.31 [acceptEncoding:protected] => gzip, deflate, lzma, sdch [acceptLanguage:protected] => ru,en-US;q=0.8,en;q=0.6,uk;q=0.4,pl;q=0.2 [robot:protected] => [detection:protected] => Array ( [browser] => 1 ) )
Т.е. в userAgent содержится 2 версии - Cromium и собственно Opera, и при обновлении меняются обе. А заменяется на 'abcd' только одна - та, которая содержится в browserVersion. Из-за этого getShortHashedUserAgent() после обновления Opera возвращает уже другое значение, и файл куков не находится. И как следствие - сабж.

Вариант решения: сделать имя файла не зависящим от браузера, например
Код: php
public static function getShortHashedUserAgent()
{
return md5(JUri::base(). JFactory::getConfig()->get('secret'));
}

P.S. Если есть кто зарегистрированным на багтрекере Joomla, можно внести предложение.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Версия для слабовидящих работает не на всех страницах

Автор sergo116

Ответов: 0
Просмотров: 29
Последний ответ 21.09.2017, 18:02:45
от sergo116
Добавить информацию в "Менеджер пользователей" админки

Автор burunduchok

Ответов: 4
Просмотров: 191
Последний ответ 01.09.2017, 14:50:32
от burunduchok
Пагинация "?start=24" -> "/2"

Автор Lehanich

Ответов: 2
Просмотров: 144
Последний ответ 28.08.2017, 13:50:11
от Lehanich
Кнопка "ПОДРОБНЕЕ" в редакторе, обрезает статью

Автор serg450453

Ответов: 1
Просмотров: 87
Последний ответ 23.08.2017, 17:45:38
от draff
Как установить такую рекламу "Объявления уровня страницы" adsense?

Автор helicopter

Ответов: 13
Просмотров: 101
Последний ответ 23.08.2017, 17:15:05
от helicopter