Jump to content

Ошибка авторизация пользователей с русскими никами

Featured Replies

Собственно проблема в авторизации пользователей с русскими именами, даже если я их создаю в админке, или меняю в ручную пароли, надпись при авторизации одна "Не верный логин или пароль", даже если пользователь отправил письмо на повторную авторизацию (смену пароля) все равно пользователь с новым паролем не может войти на форум. Переименовываю его в цивры или латиницу, и все окей.

 

 

Смотрел БД, все в UTF-8 , более не знаю, что там смотреть.

 

В чем может быть проблема, регистрируются нормально, письма приходят не смотря на русские имена, но при авторизации ни в какую?!

Link to comment
https://ipbmafia.ru/topic/2532-oshibka-avtorizaciya-polzovatelej-s-russkimi-nikami/
Share on other sites

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

но это для тех, у кого пользователей на кириллице сравнительно мало и все равно это исправление следствий

а вот причину так и не нашли мы, если найдете, поделитесь, а то до 3.3.4 обновляться даже не хочется из-за этой фигни :14:

Нужно смотреть на форуме, конкретно что-то сказать не получится.

А как вы посмотрите если у вас нет такого "эффекта"?

может ли хостинг подтупливать или это в скриптах форума?

 

Скажите где и как сделать вывод ошибок.

Соня, а ты первую тему которая при установки форума создается (типа велком и все дела) удалил? А то я чет нагуглил и кто-то где-то брякнул, что первую тему нужно удалять. Так ли - это? Или это бред сивой кобылы? А если не удальть что произойдет? Вот не хочу я удалять первую тему на форуме, даже разделы форумом не удаляю что бы оставлять нумерацию ID, это мой загон? да, но почему бы и нет?

Соня, а ты первую тему которая при установки форума создается (типа велком и все дела) удалил? А то я чет нагуглил и кто-то где-то брякнул, что первую тему нужно удалять. Так ли - это? Или это бред сивой кобылы? А если не удальть что произойдет? Вот не хочу я удалять первую тему на форуме, даже разделы форумом не удаляю что бы оставлять нумерацию ID, это мой загон? да, но почему бы и нет?

нет, не удалила :14:

неужели, она тут при делах?о_О

можно, конечно, удалить и обновиться до 3.4.0, но ... "че то я очкую" :ng_biggrin:

Соня, можешь не удалять эту тему, бред какой-то.

Я сразу ставил 3.4 и вот такая проблема.

Соня, можешь не удалять эту тему, бред какой-то.

Я сразу ставил 3.4 и вот такая проблема.

а ты поверх старой ставил? у меня эта проблема с каждым обновлением до новой версии. когда я просто поставила 3,3,1 было норм. после апгрейда до 3.3.3 вылезло и  до 3.3.4

 

п.с. а провайдер не бегет случаем? :ng_z_4:


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

Ну а БД в какой кодировки, у меня и в БД ники отображаются корректно. Просто не хочет заходить. Думпером делал дамп в utf-8, потом так же экспортировал, не помогло.

 

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

А логин и отображаемое имя одинаковое?

Да и логин и отображаемое имя одинаковое.

РЕШЕНИЕ

 

делаем в БД запрос

 

UPDATE `ibf_members` SET `members_l_display_name` = LOWER(`members_display_name`);
UPDATE `ibf_members` SET `members_l_username` = LOWER(`name`);

 

Дальше добиваемся, чтобы  mb_strtolower возвращал там строку, а не пустоту.

 

правим два файла
admin/sources/base/ipsMember.php
admin/sources/classes/member/memberFunctions.php

 

ищем strtolower и меняем все на mb_strtolower

 

В английском скрипте. 'members_l_username' => strtolower( $name )

В русском. 'members_l_username' => mb_strtolower( $name )

  • 2 недели спустя...

как хорошо, что ты нашел решение проблемы, будет ещё лучше, если оно поможет и мне, только твое решение написано для меня на арабском языке :hang1: :3:

поэтому прошу немного помощи :2:

делаем в БД запрос

 

UPDATE `ibf_members` SET `members_l_display_name` = LOWER(`members_display_name`);
UPDATE `ibf_members` SET `members_l_username` = LOWER(`name`);
Дальше добиваемся, чтобы  mb_strtolower возвращал там строку, а не пустоту.

у меня возвращает такое
это оно?

и так должно быть?

ну да, я там твое ibf заменила на ipb, а то оно меня при первом варианте куда-то далеко посылало :(

 

 

 

 

правим два файла
admin/sources/base/ipsMember.php
admin/sources/classes/member/memberFunctions.php

 

ищем strtolower и меняем все на mb_strtolower

в них по поиску этих strtolower 17 в первом и 7 во втором. все их править?

 

 

 

 

В английском скрипте. 'members_l_username' => strtolower( $name )

В русском. 'members_l_username' => mb_strtolower( $name )

это про что? чувствую, что это как-то к правке предыдущих файлов относится, но не понимаю

а, ну  нашла именно такие записи, то есть править только их? остальные strtolower(которых 17 в первом и 7 во втором шаблоне) не трогать?

 

 

и если я исправлю файлы и залью обратно, что при запросе в базе данных должно писать?

 

и да, я такая тупая, легче умереть, чтоб не мучиться :cray: :14:

 

 

 


и так должно быть?

Думаю запросы прошли успешно.

 


в них по поиску этих strtolower 17 в первом и 7 во втором. все их править?

Да, менять нужно все, при этом лучше сделать копию данных файлов на всякий случай..

Думаю запросы прошли успешно.

 

 

Да, менять нужно все, при этом лучше сделать копию данных файлов на всякий случай..

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

надо было менять все таки только members_l_username' => strtolower( $name )

поменяла, загрузила, нормально захожу :16:

ну настоящая проверка будет только когда я обновлюсь, но зато теперь сразу знаю, что надо менять :good:

  • 1 месяц спустя...


В английском скрипте. 'members_l_username' => strtolower( $name )
все сделал кроме

 

В английском скрипте. 'members_l_username' => strtolower( $name )

В русском. 'members_l_username' => mb_strtolower( $name )

 

Немного не понял где это меняется и в каком файле?


Немного не понял где это меняется и в каком файле?

admin/sources/base/ipsMember.php
admin/sources/classes/member/memberFunctions.php

В обоих файлах ищи strtolower и меняй на mb_strtolower

Respected, спасибо 

но я это не понял 

В английском скрипте. 'members_l_username' => strtolower( $name )

В русском. 'members_l_username' => mb_strtolower( $name )

Спасибо за решение проблемы, работает, но сохранилась ещё одна проблемка - в обсуждение (ЛС) невозможно добавить пользователя с русским ником.

Думаю пробелма та же самая, надо ещё в каком-нибудь файле заменить функцию, но в каком?

  • 1 year later...

Добрый день!

Стало актуально после интеграции IPB и DLE.

 

В файлах нету таких записей, как сделать дабы IPB принимал кириллицу в логинах?

  • 2 месяца спустя...

После данных изменений, при попытке смены имени или логина выдает ошибку 500

  • 1 месяц спустя...

РЕШЕНИЕ

 

делаем в БД запрос

UPDATE `ibf_members` SET `members_l_display_name` = LOWER(`members_display_name`);
UPDATE `ibf_members` SET `members_l_username` = LOWER(`name`);

 

Дальше добиваемся, чтобы  mb_strtolower возвращал там строку, а не пустоту.

 

правим два файла

admin/sources/base/ipsMember.php

admin/sources/classes/member/memberFunctions.php

 

ищем strtolower и меняем все на mb_strtolower

 

В английском скрипте. 'members_l_username' => strtolower( $name )

В русском. 'members_l_username' => mb_strtolower( $name )

помоему лучше в файле memberFunctions.php

в строке

                        $this->DB->build( array( 'select' => "members_display_name, member_id, email",
                                                                                   'from'   => 'members',
                                                                                   'where'  => $checkField . "='". $this->DB->addSlashes( mb_strtolower($unicodeName) ) . "'" . ( $member['member_id'] ? " AND member_id != " . $
                                                                                   'limit'  => array( 0,1 ) ) );
                                                              

сделать

'where'  => "LOWER(" . $checkField . ")='"

вместо апдейта всех логинов в нижний регистр, а тем более отображаемых юзернеймов, которые к авторизации не относятся

  • 8 месяцев спустя...

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

 

ну и при авторизации всё тоже самое Логин или пароль неверны.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.


Guest
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.