Simple Machines Community Forum

SMF Support => Language Specific Support => Русский (Russian) => Topic started by: village_coder on October 16, 2013, 01:19:28 PM

Title: Для логинов содержащих русские буквы авторизация проходит со второго раза
Post by: village_coder on October 16, 2013, 01:19:28 PM
По требованию заказчика немного изменил код форума сделав разрешенными только русские буквы и цифры для логинов при регистрации. На локальной машине всё работает отлично, но на хостинге авторизация проходит только со второго раза. Во время первого раза авторизации выводится сообщение что пароль неверный. На хостинге установлен PHP 5.4, думал причина в нем и устранил все преобразования в нижний регистр (введеного пользователем логина) в коде модуля автоизации (у PHP есть проблема с преобразованием регистра сивмолов из нелатинских языков). Однако данная мера не помогла.
Сталкивался ли кто-то с подобным или может быть есть идеи на этот случай?

Заранее большое спасибо. С уважением, village_coder.
Title: Re: Для логинов содержащих русские буквы авторизация проходит со второго раза
Post by: digger on October 16, 2013, 01:35:56 PM
Utf8 ?
Title: Re: Для логинов содержащих русские буквы авторизация проходит со второго раза
Post by: village_coder on October 16, 2013, 01:38:07 PM
Utf8 ?

Да, везде где только можно.
Title: Re: Для логинов содержащих русские буквы авторизация проходит со второго раза
Post by: digger on October 16, 2013, 01:41:38 PM
А в чем проблема у PHP с преобразованием регистра символов из нелатинских языков?
Title: Re: Для логинов содержащих русские буквы авторизация проходит со второго раза
Post by: village_coder on October 16, 2013, 01:45:43 PM
А в чем проблема у PHP с преобразованием регистра символов из нелатинских языков?

Знаю про кириллические символы, что у PHP 5.3 где-то была проблема преобразования UTF-8 кирилицы в верхний/нижний регистр. Вернее функция просто вообще не работала.

При авторизации по чисто латино-символьным логинам проблем нет. То есть первый раз авторизация не проходит только для тех логинов, в которых содержатся кириллические символы.
Title: Re: Для логинов содержащих русские буквы авторизация проходит со второго раза
Post by: digger on October 16, 2013, 01:47:50 PM
А в чем проблема у PHP с преобразованием регистра символов из нелатинских языков?

Знаю про кириллические символы, что у PHP 5.3 где-то была проблема преобразования UTF-8 кирилицы в верхний/нижний регистр. Вернее функция просто вообще не работала.
Приведите воспроизводимый пример.
Title: Re: Для логинов содержащих русские буквы авторизация проходит со второго раза
Post by: village_coder on October 16, 2013, 01:49:04 PM
А в чем проблема у PHP с преобразованием регистра символов из нелатинских языков?

Знаю про кириллические символы, что у PHP 5.3 где-то была проблема преобразования UTF-8 кирилицы в верхний/нижний регистр. Вернее функция просто вообще не работала.
Приведите воспроизводимый пример.

Простите, пример чего именно?

Если того бага в PHP, то пожалуйста:
Code: [Select]
echo "\n\n" . strtolower('ПрОвЕрКа') . "\n\n";
Title: Re: Для логинов содержащих русские буквы авторизация проходит со второго раза
Post by: digger on October 16, 2013, 01:50:56 PM
Простите, пример чего именно?
Пример того, что у PHP 5.3 была проблема преобразования UTF-8 кирилицы в верхний/нижний регистр.
Title: Re: Для логинов содержащих русские буквы авторизация проходит со второго раза
Post by: village_coder on October 16, 2013, 01:53:06 PM
Простите, пример чего именно?
Пример того, что у PHP 5.3 была проблема преобразования UTF-8 кирилицы в верхний/нижний регистр.

Конечно. Пожалуйста:

Code: [Select]
echo "\n\n" . strtolower('ПрОвЕрКа') . "\n\n";

На выходе получаю:
ПрОвЕрКа
Title: Re: Для логинов содержащих русские буквы авторизация проходит со второго раза
Post by: village_coder on October 16, 2013, 01:55:25 PM
Но до меня сейчас только дошло что причина не в этом. Потомучто эта функция неработоспособна и на моей машне, однако в своей локальной копии форума я эту проблему не имею.
Title: Re: Для логинов содержащих русские буквы авторизация проходит со второго раза
Post by: digger on October 16, 2013, 01:57:30 PM
Пример того, что у PHP 5.3 была проблема преобразования UTF-8 кирилицы в верхний/нижний регистр.

Конечно. Пожалуйста:

Code: [Select]
echo "\n\n" . strtolower('ПрОвЕрКа') . "\n\n";

На выходе получаю:
ПрОвЕрКа
Ну, то что вы пытаетесь использовать строковую функцию без задания корректной локали или используете не подходящую для мультибайтных строк функцию, вовсе не значит что "у PHP 5.3 была проблема преобразования UTF-8 кирилицы в верхний/нижний регистр".
Title: Re: Для логинов содержащих русские буквы авторизация проходит со второго раза
Post by: village_coder on October 16, 2013, 02:01:28 PM
Пример того, что у PHP 5.3 была проблема преобразования UTF-8 кирилицы в верхний/нижний регистр.

Конечно. Пожалуйста:

Code: [Select]
echo "\n\n" . strtolower('ПрОвЕрКа') . "\n\n";

На выходе получаю:
ПрОвЕрКа
Ну, то что вы пытаетесь использовать строковую функцию без задания корректной локали или используете не подходящую для мультибайтных строк функцию, вовсе не значит что "у PHP 5.3 была проблема преобразования UTF-8 кирилицы в верхний/нижний регистр".

Я Вас понимаю, я знаю как преобразовать регистр у кирллических строк в UTF-8. Всё дело в том, что в коде форума повсеместно используется именно эта функция преобразования строки в нижний регистр.
И я уже сказал, что понял, что проблема вовсе не в этом. И сюда я пришел не поспорить за нюансы PHP, а всё-таки выяснить причину данной ошибки.
Title: Re: Для логинов содержащих русские буквы авторизация проходит со второго раза
Post by: digger on October 16, 2013, 02:08:08 PM
И я уже сказал, что понял, что проблема вовсе не в этом. И сюда я пришел не поспорить за нюансы PHP, а всё-таки выяснить причину данной ошибки.
У коробочного форума, что на php5.3, что на php5.4 нет проблем с русскими логинами, соответственно причина не в php или форуме, а в
Quote
По требованию заказчика немного изменил код форума
Title: Re: Для логинов содержащих русские буквы авторизация проходит со второго раза
Post by: village_coder on October 16, 2013, 02:13:02 PM
И я уже сказал, что понял, что проблема вовсе не в этом. И сюда я пришел не поспорить за нюансы PHP, а всё-таки выяснить причину данной ошибки.
У коробочного форума, что на php5.3, что на php5.4 нет проблем с русскими логинами, соответственно причина не в php или форуме, а в
Quote
По требованию заказчика немного изменил код форума

Тут вы не правы. Сейчас только проверил это на коробочном форуме - проблема точно та же самая.
Title: Re: Для логинов содержащих русские буквы авторизация проходит со второго раза
Post by: digger on October 16, 2013, 02:15:52 PM
И я уже сказал, что понял, что проблема вовсе не в этом. И сюда я пришел не поспорить за нюансы PHP, а всё-таки выяснить причину данной ошибки.
У коробочного форума, что на php5.3, что на php5.4 нет проблем с русскими логинами, соответственно причина не в php или форуме, а в
Quote
По требованию заказчика немного изменил код форума

Тут вы не правы. Сейчас только проверил это на коробочном форуме - проблема точно та же самая.
Вы в курсе что логины в SMF регистрозависимые?
Не может такой проблемы быть на чистом форуме, иначе бы уже давно тут вопили все неанглоговорящие.
Title: Re: Для логинов содержащих русские буквы авторизация проходит со второго раза
Post by: village_coder on October 16, 2013, 02:19:31 PM
И я уже сказал, что понял, что проблема вовсе не в этом. И сюда я пришел не поспорить за нюансы PHP, а всё-таки выяснить причину данной ошибки.
У коробочного форума, что на php5.3, что на php5.4 нет проблем с русскими логинами, соответственно причина не в php или форуме, а в
Quote
По требованию заказчика немного изменил код форума

Тут вы не правы. Сейчас только проверил это на коробочном форуме - проблема точно та же самая.
Вы в курсе что логины в SMF регистрозависимые?
Не может такой проблемы быть на чистом форуме, иначе бы уже давно тут вопили все неанглоговорящие.

Могу предположить что проблема как-то связана с хостингом (на одном хостинге у меня сейчас два форума, один свежий, другой после моего вмешательства). Ведь действительно на локальной машине такой проблемы нет. И дело, судя по всему, как я уже сказал не в регистрах.
И если проблема в хостинге то хотелось бы знать, каким образом он её создает.
Title: Re: Для логинов содержащих русские буквы авторизация проходит со второго раза
Post by: digger on October 16, 2013, 02:26:29 PM
Проблема то как раз в регистрах, потому что в хэше пароля участвует и логин. Может локаль на хостинге задана жестко какая-нибудь немецкая :)
Проверяйте что из формы авторизации приходит, какой хэш получается и с каким хэшем в базе сравнивается.
Title: Re: Для логинов содержащих русские буквы авторизация проходит со второго раза
Post by: inter on October 24, 2013, 02:10:28 AM
Логины в SMF регистронезависимы и это правильно.

village_coder, попробуйте в файле ./Sources/LogInOut.php заменить все strtolower( на $smcFunc['strtolower'](