SMF 2.017 проблема с авторизацией пользователя

Автор Ulibka, 04 июня 2020, 21:30:32

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Ulibka

Пользователь с именем Рамза не может авторизоваться в короткой форме логин/пароль
Пароль только из цифр



Авторизоваться можно только если нажать на кнопку вход
и ввести туда имя/пароль
Вторая проблема в том что пароль приходится вводить два раза.



Если и имя и пароль состоит из английских букв/цифр проблем не возникает.

Таблица smf_members в кодировке utf8_general_ci
В smf_settings установлено значение:
global_character_set=UTF-8

В settings.php есть запись:
$db_character_set = 'utf8';

Подскажите пожалуйста - в чем может быть проблема?
Почему не работает первый диалог, но работает второй ?



Ulibka


Ulibka

Переход на 2.015 меня сильно пугает.
Я практически месяц потратил на переход на 2.017 с 2.011
Соответственно делал правки в разных местах, в том числе и в движке.
Проделать все это по новой будет затруднительно.

Пока попробовал этот патч:
https://www.simplemachines.org/community/index.php?topic=571082.msg4042818#msg4042818

Заработала верхняя простая форма входа, но по прежнему требует ввода логина/пароля два раза.
Видимо проблема где то в куках (то бишь в коде сервера)

digger®

Цитата: Ulibka от 05 июня 2020, 11:39:16Заработала верхняя простая форма входа, но по прежнему требует ввода логина/пароля два раза.
Видимо проблема где то в куках (то бишь в коде сервера)
Форум на utf-8 переводили штатными средствами или вручную? Если вручную, то это сделано https://www.simplemachines.ru/index.php?msg=116174 ?

Ulibka

Цитата: digger® от 05 июня 2020, 13:50:11Форум на utf-8 переводили штатными средствами или вручную? Если вручную, то это сделано https://www.simplemachines.ru/index.php?msg=116174 ?

Конечно сделано, иначе я бы там русских слов не увидел.
Тестовый сайт:
https://woodtools.site/
тестовый пользователь : test2020, пароль 1234

Англичан пускает без вопросов, а вот русских мурыжит
Чтобы войти необходимо форму входа заполнить два раза

русский пользователь:
Иван456
пароль : 1234

Ulibka

Переключился на дефолтную тему - на ней русских пускает с первого раза.
Осталось найти отличие :)

Yarik

Вы быстрый вход в нестандартной теме пропатчил?
Я бы его вообще убрал. Пускай через кнопку вход заходят.

Ulibka

#9
Через кнопку вход - тоже два раза надо логин/пароль вводить (тема Japanes)

На локальном сервере (OpenServer) переключение на дефолтную тему не помогло - все равно пароль требуется вводить два раза.
После первого ввода пароля пишет : неверный пароль и делает переадресацю на форму ввода пароля index.php?action=login2

Сравнил формы ввод пароля в дефолтной теме и Japanes - полностью совпадают
<input type="hidden" name="hash_passwrd" value="">
<input type="hidden" name="ad5ad0d2" value="9a70e4213a3c09d7566e5891572d1045">

При обработке формы поле hash_passwrd заполняется вычисленным хешом и отсылается методом post на index.php?action=login2"

Пробовал в settings.php добавить:
$cookie_no_auth_secret = 1;
а в smf_settings добавить запись
'integrate_verify_user' =foo

В этом случае на форум вообще нельзя зайти

Yarik

#10
Интересно даже.Только что проверил у себя зарегав несколько аккаунтов кириллицей.Вход по кнопке с первого раза.Да и иначе меня бы уже жалобами задрали.Но у меня не чистая крайняя семнадцатая+уже писано,переписано в коде - вырезано,дополнено и прочее.Так что утверждать ничего не буду.

Ulibka

Проблема именно когда у пользователя в логине русские буквы

Yarik

Цитата: Ulibka от 06 июня 2020, 00:04:17Проблема именно когда у пользователя в логине русские буквы
Ой.Извиняюсь.Кириллицей я регил у себя.То я уже что-то загнался в конце дня.
Исправил вверху.

Ulibka

У меня засада - что в default Curve теме не работает - логин идет только со второго раза.
Ты script.js менял ?

Покажи пожалуйста - какие у тебя настройки куки - админ/настройки сервера

Ulibka

Поставил голую smf2017
Зарегистрировал пользователя Иван - вход только со второго раза

Yarik

Цитата: Ulibka от 06 июня 2020, 09:02:50Покажи пожалуйста - какие у тебя настройки куки - админ/настройки сервера
Стандартные,по умолчанию при установке.Ничего там не менял.
Цитата: Ulibka от 06 июня 2020, 09:02:50Ты script.js менял ?
Оооо.Менялись скрипты,и не только эти...
Цитата: Ulibka от 06 июня 2020, 09:06:21Поставил голую smf2017
Зарегистрировал пользователя Иван - вход только со второго раза
Может в хостинге дело?

Ulibka

Про проблему написал в том числе на английском форуме, написал все сопутствующие сведения.
Получил ответ - дорогой товарищ, мы сделали все что могли, дальше решай проблему сам.

Месяц псу под хвост.

Я принял решение переходить на xenforo

У SMF ошибки тянутся годами и не исправляются.
У xenforo хотя бы есть поддержка.

Обидно что потерял месяц.
По всей видимости моя ошибка будет пофиксена где то в версиях 2.1

Сама версия 2.1. сейчас вываливает в лог массу ошибок.

Кстати импорт в Xenforo прошел нормально - единственная проблема - не импортировались аватары, но это я думаю порешаю.
Что самое удивительное - сохранился старый пароль и мой любимый пользователь Иван зашел под своим логином с первого раза.

В  xenforo (на первый поверхностный взгляд ) из коробки реализованы все функции , для которых в SMF мне приходилось применять мод.

Наверно лучшим выходом для каждого администратора SMF будет переход на Xenforo.

Yarik

А может как вариант просто 2.0.15 тогда поставить с нуля?И сидеть на нём.

gorbi

Цитата: S.T.A.L.K.E.R. от 06 июня 2020, 17:09:50А может как вариант просто 2.0.15 тогда поставить с нуля?И сидеть на нём.
Гуры тоже это говорят.

gorbi

Цитата: Ulibka от 06 июня 2020, 17:04:48Наверно лучшим выходом для каждого администратора SMF будет переход на Xenforo.
Стоит денег + ежегодные взносы, если я правильно понимаю.

digger®

Цитата: Ulibka от 06 июня 2020, 17:04:48Про проблему написал в том числе на английском форуме, написал все сопутствующие сведения.
Получил ответ - дорогой товарищ, мы сделали все что могли, дальше решай проблему сам.
Месяц псу под хвост.
Я принял решение переходить на xenforo
У SMF ошибки тянутся годами и не исправляются.
У xenforo хотя бы есть поддержка.

Не одобряю ситуацию, но вы сравниваете оплаченную техподдержку и безвозмездную помощь на форуме, в меру чьих то сил.
Если бы кому-то из моих клиентов сейчас приспичило перейти на 2.0.17, я бы для них решил и проблему с русским логином, да и любую другую.
Зачем вы поставили 2.0.17 не знаю. У нас в новостях висит закрепленная тема про выход 2.0.16 и 2.0.17, в которой красными буквами мной написано, что ставить их не рекомендуется и следом несколько страниц пользователи обсуждали проблемы этих версий.

Цитата: Ulibka от 06 июня 2020, 17:04:48Наверно лучшим выходом для каждого администратора SMF будет переход на Xenforo.
Ага, каждый администратор SMF со сторублевого хостинга будет рад купить XF за 12000р и каждый год за поддержку и обновления потом приплачивать по 4000р. Плюс платить за виртуальный сервер и его поддержку, на который придется перейти со сторублевого хостинга, чтобы XF смог сносно ворочаться.
XF неплох, но это разные категории чтобы их так просто сравнивать.

Yarik

Цитата: gorbi от 06 июня 2020, 18:14:01Гуры тоже это говорят.
В свободное время могу посмотреть что там да и как.
На гуру не претендую но чем смогу то и помогу.
Есть мысля что там ничего особо сложного нет.

Ulibka

Цитата: digger® от 06 июня 2020, 18:45:47Зачем вы поставили 2.0.17 не знаю.


Если бы я сам знал  idiot

Просто про все версии пишут что они с ошибками.
Поставил голую 2.017 - там такая же проблема с русскими именами.
Применил патч на script.js - проблема исчезла.

В то же время на моем 2.017 с инсталированными модами проблема остается.
Моды причем самые необходимые и на авторизацию точно никак не влияют. 

Я почитал что Вы писали про 2.1 и не стал ее ставить :)
А вот про 2.017 не дочитал.

Я просто очень боюсь что с 2.015 тоже могут быть какие то проблемы.
Как то мне не привычно что продукт из коробки идет с ошибками.

Про 2.016 здесь же нашел длинные переписки по поводу ошибок.

Одно дело когда я условно говоря поменял фару на машине, ошибся, сгорел предохранитель.
Но я понимаю что я затрону эти места и совсем другое когда я поменял фару и глохнет двигатель.
Чинить двигатель самому как то страшновато - что там в результате может отвалится сложно сказать.

С xenforo я не знаком (только вчера познакомились) но там из коробки есть все, что здесь я ставил в виде мода.

У меня просто каждый месяц капает $150 за выделенный сервер с которого я благополучно собирался свалить на хостинг в ближайшие дни, в результате получил гранату в живот.

Признаться никогда не предполагал что новая версия может быть хуже старой.
Проявил самонадеянность за что был сейчас наказан  wallbash  

Наверно надо последовать Вашему совету и начать все с нуля с 2.015


digger®

Цитата: Ulibka от 06 июня 2020, 20:41:01Поставил голую 2.017 - там такая же проблема с русскими именами.
Применил патч на script.js - проблема исчезла.

В то же время на моем 2.017 с инсталированными модами проблема остается.
Моды причем самые необходимые и на авторизацию точно никак не влияют.

Тогда проблема скорее всего не с кодом, а с чем-то связанным с перекодировкой форума в utf-8.

Ulibka

Это был процесс upgrade с 2.011
Сначала, руками конвертировал все в utf8 (collation utf8_general_ci)
Да, сейчас в основном по умолчанию ставится mb4, но я считаю что и 3 байтовая кодировка для русских букв избыточна

Изначально кодировка везде была cp_1251, в том числе и в файлах кода.
Установку 2.017 сделал с нуля, старый код вообще не использовал.
Перед установкой smf_settings, smf_themes очистил, заменил все на данные "чистой установки"
Потом запустил upgrade.php из консоли (на web не захотела работать)
Отработал штатно, написал что чего то где то поменял.

Далее поставил тему, плагины, в паре мест легко редактировал движок (связано с BB code)

Наличие тотемов UTF-8 :) проверил в 3 описанных Вами местах - все конечно стоит.

Если бы была проблема с кодировкой - то он тогда не смог бы сопоставить введенный пароль с хешем ни с первого ни со второго раза.

Я полагаю что хотя в первый раз пишет "пароль неверный", то видимо сервер устанавливает какую то куку или меняет идентификатор сессии, что соответственно позволяет успешно авторизоваться во второй раз.

Поскольку идет перезагрузка страницы - то JS не может запомнить никакой информации. localstorage вроде бы не используется.

Соответственно мне думается что все же проблема на стороне сервера.

Yarik

Я починил Вам авторизацию на том тестовом форуме что вы мне дали.Можете проверять там  своим тестовым Иваном
Строка 128 Вашей темы оформления,в index.template.php
Было
var smf_charset = "utf-8";', $context['show_pm_popup'] ? 'Стало
var smf_charset = "', $context['character_set'], '";', $context['show_pm_popup'] ? '

Ulibka

Большое спасибо!!!
Просто камень с души!

Могли бы Вы рассказать логику поиска ?

Yarik

Цитата: Ulibka от 07 июня 2020, 16:51:13Могли бы Вы рассказать логику поиска ?
Вы же сами написали что в дефолте все нормально.Проверил,так оно и есть.
Начал сличать код двух файлов касаемо входа ну и нашел несколько расхождений.Одно из них и было тем что искал.
Минут 10-ть все заняло.
А вот зачем так делать в коде нужно было это уже большой вопрос к автору темы.

Ulibka

Перешел на продуктив с SMF 2.017
https://woodcraftsman.ru/index.php

Как водится проблемы не заставили себя ждать :)
Мне кажется что если в логине есть русские буквы - то пароль надо обязательно восстанавливать по e-mail.
По всей видимости это проблема конвертации всех таблиц из 1251 в UTF8

Теперь пользователи с русскими логинами пишут - типа не могу восстановить пароль по e-mail.
Руками устанавливаю новый пароль и посылаю.

Проблему с восстановлением понять не могу - лично у меня все работает.

Может быть у кого то есть идея как воспроизвести ошибку восстановления пароля по e-mail?

Подскажите пожалуйста функцию, которая устанавливает новый пароль у пользователя?
(после удаления 50 тыс совсем мертвых пользователей - у меня осталось 40тыс. вроде бы живых пользователей)

Думаю у всех пользователей с русскими именами автоматически сформировать пароли и разослать по e-mail

digger®

Цитата: Ulibka от 15 июня 2020, 20:05:15Может быть у кого то есть идея как воспроизвести ошибку восстановления пароля по e-mail?
Если можете дать логин/пароль который не срабатывает после конвертации и дамп записи этого пользователя из smf_members, может смогу помочь со всеми.

Ulibka


digger®

В движке предусмотрен вариант работы старых логинов/паролей после конвертации, но для того, чтобы он работал, в таблице smf_settings должны быть заданы правильные значения для
global_character_set = UTF-8
previousCharacterSet = CP1251

Если конвертация выполнялась вручную, нужно выполнить запросы
INSERT INTO smf_settings (variable, value) VALUES ('global_character_set', 'UTF-8')
INSERT INTO smf_settings (variable, value) VALUES ('previousCharacterSet', 'CP1251')

Тогда при первой попытке входа пользователя с русским логином/паролем выдаст сообщение о неверном пароле, при второй попытке, обновит хэш пароля в базе и успешно залогинит пользователя.

В FAQ добавил https://www.simplemachines.ru/index.php?msg=116174

Ulibka

Огромное человеческое спасибо!

У меня все заработало!