Jump to content

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

Featured Replies

Posted
comment_16865

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

 

 

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

 

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

comment_16868

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

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

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

comment_16873

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

  • Author
comment_16887

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

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

 

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

  • Author
comment_16896

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

comment_16899

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

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

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

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

  • Author
comment_16904

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

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

comment_16905

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

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

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

 

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

  • Author
comment_16909


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

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

 

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

comment_17052

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

  • Author
comment_17065

РЕШЕНИЕ

 

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

 

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 недели спустя...
comment_17989

как хорошо, что ты нашел решение проблемы, будет ещё лучше, если оно поможет и мне, только твое решение написано для меня на арабском языке :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:

 

 

 

comment_17992


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

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

 


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

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

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

 

 

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

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

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

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

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

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


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

 

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

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

 

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

comment_22504


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

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

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

comment_22530

Respected, спасибо 

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

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

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

comment_22863

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

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

  • 1 year later...
comment_72347

Добрый день!

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

 

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

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

РЕШЕНИЕ

 

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

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 месяцев спустя...
comment_95784

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

 

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

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.