uLogin - Авторизация через соц. сети phpBB

Проблемы с установкой или работой phpBB 3.0.х. Решение проблем связанных с модами, стилями, доработками и так далее.
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

uLogin - Авторизация через соц. сети phpBB

Сообщение Slash » Ср апр 02, 2014 8:48 pm

Недавно, в моде uLogin для phpBB, нашел несколько небольших ошибок, которые я предлагаю исправить таким образом:
И так первая ошибка, которая может появится, при входе, скажем через Одноклассники, выглядит она примерно так:

Код: Выделить всё

Fatal error: require_once(): Failed opening required 'class_JSON.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/xxxxx/data/www/сайт.ru/includes/ulogin/class_ulogin.php on line 11

Ошибка это возникает, потому что скрипт не может найти файл: class_JSON.php, конечно он находится на своем месте, но имя его не имеет больших букв (class_json.php). Что бы исправить эту ошибку, исправляем имя файла class_json.php на class_JSON.php. Либо открываем файл: includes/ulogin/class_ulogin.php, находим:

Код: Выделить всё

require_once('class_JSON.php'); 

и заменяем на:

Код: Выделить всё

require_once('class_json.php'); 

Лично я бы выбрал второй вариант.
Теперь скрипт найдет этот файл.

Идем дальше, и следующая ошибка при входе, так же пусть будет через Одноклассники - это неопределенная переменная, ошибка сообщается примерно так:
[phpBB Debug] PHP Notice: in file [ROOT]/includes/ulogin/class_ulogin.php on line 378: Undefined index: lang

Исправляем ошибку так: открываем файл: includes/ulogin/class_ulogin.php, находим номер указанной строчки, в данном случаи это 378:

Код: Выделить всё

$messenger->template($email_template, $data['lang']); 

и меняем на:

Код: Выделить всё

$messenger->template($email_template, isset($data['lang']) ? $data['lang'] : NULL); 

Дальше похожие ошибки и решения их такие же. Неопределенная переменная email, примерно такое сообщение:
[phpBB Debug] PHP Notice: in file [ROOT]/includes/ulogin/class_ulogin.php on line 379: Undefined index: email

Так же открываем файл: includes/ulogin/class_ulogin.php, находим строку 379:

Код: Выделить всё

$messenger->to($data['email'], $data['username']);

меняем на:

Код: Выделить всё

$messenger->to(isset($data['email']) ? $data['email'] : NULL, $data['username']);

Ошибка - неопределенная переменная gen_password:
[phpBB Debug] PHP Notice: in file [ROOT]/includes/ulogin/class_ulogin.php on line 384: Undefined index: gen_password

Решение: все в том же файле: includes/ulogin/class_ulogin.php, находим строку 384:

Код: Выделить всё

$messenger->assign_vars(array( 'WELCOME_MSG' => htmlspecialchars_decode(sprintf($user->lang['WELCOME_SUBJECT'], $config['sitename'])), 'USERNAME' => htmlspecialchars_decode($data['username']), 'PASSWORD' => htmlspecialchars_decode($gen_password) )); 

и меняем её на:

Код: Выделить всё

$messenger->assign_vars(array( 'WELCOME_MSG' => htmlspecialchars_decode(sprintf($user->lang['WELCOME_SUBJECT'], $config['sitename'])), 'USERNAME' => htmlspecialchars_decode($data['username']), 'PASSWORD' => htmlspecialchars_decode(isset($gen_password) ? $gen_password : NULL) )); 

Теперь можно входить через Одноклассники и не боятся, что вылезет, какая ни будь неопределенная переменная. Но как мне подсказали пользователи Контакта: при входе через VK, появляются следующие ошибки:
[phpBB Debug] PHP Notice: in file [ROOT]/includes/ulogin/class_ulogin.php on line 321: Undefined index: bdate
[phpBB Debug] PHP Notice: in file [ROOT]/includes/ulogin/class_ulogin.php on line 108: Undefined index: city

Опять что-то не определили... Исправляем по нашей схеме: открываем (для строки 321): includes/ulogin/class_ulogin.php, находим строку 321:

Код: Выделить всё

'user_birthday'        => ($this->user['bdate'] ? date('d-m-Y', strtotime($this->user['bdate'])) : ''),

меняем на:

Код: Выделить всё

'user_birthday'        => (isset($this->user['bdate']) ? $this->user['bdate'] : NULL ? date('d-m-Y', strtotime(isset($this->user['bdate']) ? $this->user['bdate'] : NULL)) : ''),

Исправляем ошибку в строчке 108. Все в том же файле, находим 108 строчку:

Код: Выделить всё

if ($this->user['country'] && $this->user['city'])

меняем на:

Код: Выделить всё

if ($this->user['country'] && isset($this->user['city']) ? $this->user['city'] : NULL)

Вот пока все ошибки, которые мне удалось найти. Надеюсь пригодится!

Редактированные файлы необходимо сохранять в UTF-8 (без BOM), подробнее об этом здесь: Re: [FAQ] Часто задаваемые вопросы по phpBB 3.0.х

Скачать модификацию: http://ulogin.ru/
В этой теме обсуждаем модификацию uLogin только для phpBB.
Основная тема: uLogin - Авторизация на сайте через соц. сети
Реклама
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

Re: uLogin - Авторизация через соц. сети phpBB

Сообщение Slash » Сб июл 05, 2014 12:34 pm

С недавних пор автор мода внес небольшие изменения в инструкцию, и у некоторых пользователей при попытке войти через соц.сеть ВКонтакте, просто перебрасывает на страницу ознакомления с правилами форума перед регистрацией. Исправляем так: в ucp.php, находим:

Код: Выделить всё

        if (isset($config['ulogin_enable']) && $config['ulogin_enable'] && isset($_POST['token']) && $_POST['token'])
        {
            $module->load('ulogin', 'register');
        }
        else
        {
            $module->load('ucp', 'register');
        } 

и меняем на:

Код: Выделить всё

        if (isset($_POST['token']) && $_POST['token'])
        {
            $module->load('ulogin', 'register');
        }
        else
        {
            $module->load('ucp', 'register');
        } 

Теперь всё должно работать правильно, согласно с правками указанных в первом посте.

Вернуться в «phpBB»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость