Denis Chursinov Опубликовано 21 Февраля 2014 Жалоба Поделиться Опубликовано 21 Февраля 2014 А если вывод поставить в самом начале функции и выводить $remote_member[ REMOTE_FIELD_PASS ] и $password ? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
frazer Опубликовано 22 Февраля 2014 Жалоба Поделиться Опубликовано 22 Февраля 2014 В функцию protected function _comparePasswords( $password, $remote_member ) даже не заходитА если вывод поставить в самом начале функции и выводить $remote_member[ REMOTE_FIELD_PASS ] и $password ?ПустыеВ public function authenticate в начале вывел echo $password; и получил то что вводил в поле пароля Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Denis Chursinov Опубликовано 23 Февраля 2014 Жалоба Поделиться Опубликовано 23 Февраля 2014 Ну значит идем по выходам. if ( $this->is_admin_auth ) Это пропустим, логинимся же не в админку. if ( ! $remote_member[ REMOTE_FIELD_NAME ] ) вот после этого можно эху вставить. Сработает, если имя пользователя не найдено в таблице внешней базы. if ( ! $this->_comparePasswords( $password, $remote_member ) ) А это уже вызов нужной функции. Вот и получаем, что единственное место, где можно соскочить - это поиск юзера в базе. select * from REMOTE_TABLE_NAME where REMOTE_FIELD_NAME = ИМЯ ЮЗЕРА Вот такой запрос. Значит надо бы перед ним вывести REMOTE_TABLE_NAME и REMOTE_FIELD_NAME, Получить конкретный запрос и выполнить его в mysql-клиенте, хотя и так будет видно, что собака роется в настройках подключения к внешней базе.А еще, вы там не почту в качестве логина используете?http://community.invisionpower.com/resources/bugs.html/_/ip-board/external-database-login-username-only-r42301 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
frazer Опубликовано 24 Февраля 2014 Жалоба Поделиться Опубликовано 24 Февраля 2014 Ну значит идем по выходам. if ( $this->is_admin_auth ) Это пропустим, логинимся же не в админку. if ( ! $remote_member[ REMOTE_FIELD_NAME ] ) вот после этого можно эху вставить. Сработает, если имя пользователя не найдено в таблице внешней базы. if ( ! $this->_comparePasswords( $password, $remote_member ) ) А это уже вызов нужной функции. Вот и получаем, что единственное место, где можно соскочить - это поиск юзера в базе. select * from REMOTE_TABLE_NAME where REMOTE_FIELD_NAME = ИМЯ ЮЗЕРА Вот такой запрос. Значит надо бы перед ним вывести REMOTE_TABLE_NAME и REMOTE_FIELD_NAME, Получить конкретный запрос и выполнить его в mysql-клиенте, хотя и так будет видно, что собака роется в настройках подключения к внешней базе.А еще, вы там не почту в качестве логина используете?http://community.invisionpower.com/resources/bugs.html/_/ip-board/external-database-login-username-only-r42301Почту Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Denis Chursinov Опубликовано 24 Февраля 2014 Жалоба Поделиться Опубликовано 24 Февраля 2014 Ну вот из описания бага следует, что по почте он не ищет. Надо дописать... Отправлено с моего W100 через Tapatalk Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
frazer Опубликовано 24 Февраля 2014 Жалоба Поделиться Опубликовано 24 Февраля 2014 Что нужно дописать? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Denis Chursinov Опубликовано 24 Февраля 2014 Жалоба Поделиться Опубликовано 24 Февраля 2014 Во-первых надо добавить настройку, которая указывает на поле email в удаленной базе.А во-вторых$remote_member = $RDB->buildAndFetch( array( 'select' => '*', 'from' => REMOTE_TABLE_NAME, 'where' => REMOTE_FIELD_NAME."='".$RDB->addSlashes($username)."' ".REMOTE_EXTRA_QUERY ) ); дополнить$remote_member = $RDB->buildAndFetch( array( 'select' => '*', 'from' => REMOTE_TABLE_NAME, 'where' => REMOTE_FIELD_NAME."='".$RDB->addSlashes($username)."' AND ".REMOTE_FIELD_EMAIL."='".$RDB->addSlashes($email_address)."' ".REMOTE_EXTRA_QUERY ) ); IPS говорит о том, что модуль является скорее примером, нежели работающим "из коробки" решением. Подразумевается, что вы будете использовать модуль, как каркас. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
frazer Опубликовано 25 Февраля 2014 Жалоба Поделиться Опубликовано 25 Февраля 2014 Во-первых надо добавить настройку, которая указывает на поле email в удаленной базе.А во-вторых $remote_member = $RDB->buildAndFetch( array( 'select' => '*', 'from' => REMOTE_TABLE_NAME, 'where' => REMOTE_FIELD_NAME."='".$RDB->addSlashes($username)."' ".REMOTE_EXTRA_QUERY ) ); дополнить $remote_member = $RDB->buildAndFetch( array( 'select' => '*', 'from' => REMOTE_TABLE_NAME, 'where' => REMOTE_FIELD_NAME."='".$RDB->addSlashes($username)."' AND ".REMOTE_FIELD_EMAIL."='".$RDB->addSlashes($email_address)."' ".REMOTE_EXTRA_QUERY ) ); IPS говорит о том, что модуль является скорее примером, нежели работающим "из коробки" решением. Подразумевается, что вы будете использовать модуль, как каркас. Ругается на эту настройку AND ".REMOTE_FIELD_EMAIL mySQL query error: SELECT * FROM users WHERE email='' AND REMOTE_FIELD_EMAIL='mail@yandex.ru' Спасибо всем, разобрался. Вместо $RDB->addSlashes($username) написал $RDB->addSlashes($email_address) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Denis Chursinov Опубликовано 25 Февраля 2014 Жалоба Поделиться Опубликовано 25 Февраля 2014 В моем коде не AND а OR надо, я натупил. Вообще, более универсальным решением будет такой блок в auth.php: //----------------------------------------- // Get member from remote DB //----------------------------------------- if ($username) { $remote_member = $RDB->buildAndFetch( array( 'select' => '*', 'from' => REMOTE_TABLE_NAME, 'where' => REMOTE_FIELD_NAME."='".$RDB->addSlashes($username)."' ".REMOTE_EXTRA_QUERY ) ); } else { $remote_member = $RDB->buildAndFetch( array( 'select' => '*', 'from' => REMOTE_TABLE_NAME, 'where' => REMOTE_FIELD_EMAIL."='".$RDB->addSlashes($email_address)."' ".REMOTE_EXTRA_QUERY ) ); } Добавить в acp.php array( 'title' => 'Поле email в таблице', 'description' => "Поле таблицы удаленной базы, по которому будет проверяться email при авторизации на форуме", 'key' => 'REMOTE_FIELD_EMAIL', 'type' => 'string', ), Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.