Конвертація форуму SMF в UTF-8

  у розділі Технічні теми 

SMF logoКонвертація самого форуму відбувається без проблем, з панелі адміністратора.

Але, будьте готові що після конвертації SMF 1.1 в UTF-8 усі користувачі імена яких містили нелатинські символи отримуватимуть помилку "Невірний пароль".

Виявилось, що пароль користувача зберігається у базі у вигляді хешу (SHA1) від слів "користувач+пароль". Тому хеш від імені в кодуванні CP1251 став відрізнятись від хешу що визначається тепер, від імені в UTF-8. Ну не гади?

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

В файлі LogInOut.php, після $other_passwords = array(); треба вписати:

$other_passwords[] = sha1(iconv("UTF-8", "CP1251",strtolower($user_settings['memberName'])).$_REQUEST['passwrd']);

Тепер хеш з бази буде звірятись з поточним хешем, але порахованим так, ніби ім’я користувача в CP1251. Якщо пароль правильний - користувач увійде в систему а його хеш буде оновлено на правильний, розрахований в UTF-8.


Коментарі