Lösenordskonvertering
Moderatorer: Supportgrupp, Moderatorgrupp
Kategoriregler
Här kan du ställa frågor om problem med och drift av phpBB 3 (3.0.0 eller senare). Det är här du bör skapa en tråd om du har ett problem, vill ställa en fråga och vill ha ett svar. Gäller det något annat, var vänlig bläddra nedåt på forumindex.
Klicka här för att se våra allmänna forumregler.
Här kan du ställa frågor om problem med och drift av phpBB 3 (3.0.0 eller senare). Det är här du bör skapa en tråd om du har ett problem, vill ställa en fråga och vill ha ett svar. Gäller det något annat, var vänlig bläddra nedåt på forumindex.
Klicka här för att se våra allmänna forumregler.
Lösenordskonvertering
Jag testade att konvertera mitt forum, men när jag skulle logga in fick jag besked om att konverteringen av mitt lösenord misslyckats och att jag därför skulle skriva in mitt nick och min epostadress för att få ett nytt.
Jag försökte komma på nåt sätt så man skulle slippa det, så jag testade att kopiera över MD5-summorna i phpbb_users från phpBB2-databasen till phpBB3-databasen. För min del gick det fint att logga in efteråt, men moderatorerna på mitt forum kunde det inte. Av någon anledning var user_pass_convert = 0 för mig men 1 för dem. Beror det på att jag är founder, eller att jag är admin?
Att sätta user_pass_convert till 0 för dem verkade lösa problemet. Men så testade jag med ett nick med lösenordet åäö och fick återigen beskedet att konverteringen av mitt lösenord misslyckats och att jag skulle uppge nick och mailadress.
Läste på Area51 om hur man kunde få lösenord med grekiska bokstäver att fungera efter en konvertering:
http://area51.phpbb.com/phpBB/viewtopic.php?f=3&t=28328
Jag antar att man kan göra på samma sätt när det gäller lösenord som innehåller åäö.
Så min fråga är hur jag skall göra transformeringsfunktionen?
Jag försökte komma på nåt sätt så man skulle slippa det, så jag testade att kopiera över MD5-summorna i phpbb_users från phpBB2-databasen till phpBB3-databasen. För min del gick det fint att logga in efteråt, men moderatorerna på mitt forum kunde det inte. Av någon anledning var user_pass_convert = 0 för mig men 1 för dem. Beror det på att jag är founder, eller att jag är admin?
Att sätta user_pass_convert till 0 för dem verkade lösa problemet. Men så testade jag med ett nick med lösenordet åäö och fick återigen beskedet att konverteringen av mitt lösenord misslyckats och att jag skulle uppge nick och mailadress.
Läste på Area51 om hur man kunde få lösenord med grekiska bokstäver att fungera efter en konvertering:
http://area51.phpbb.com/phpBB/viewtopic.php?f=3&t=28328
Jag antar att man kan göra på samma sätt när det gäller lösenord som innehåller åäö.
Så min fråga är hur jag skall göra transformeringsfunktionen?
Så här skulle jag göra...
Öppna includes/auth/auth_db.php
Leta uppErsätt med
Öppna includes/utf/data/recode_basic.php
Leta uppLägg till innan
Har bara testat lite, verkar funka. Den är för åäöÅÄÖ
Kom ihåg att ta backup på allt möjligt innan.
/D
Öppna includes/auth/auth_db.php
Leta upp
Kod: Markera allt
if (md5($password_old_format) == $row['user_password'] || md5(utf8_to_cp1252($password_old_format)) == $row['user_password'])Kod: Markera allt
if (md5($password_old_format) == $row['user_password'] || md5(utf8_to_swe($password_old_format)) == $row['user_password'] || md5(utf8_to_cp1252($password_old_format)) == $row['user_password'])Leta upp
Kod: Markera allt
?>Kod: Markera allt
function utf8_to_swe($string)
{
static $transform = array(
"\xC3\xA5" => "\xE5",
"\xC3\xA4" => "\xE4",
"\xC3\xB6" => "\xF6",
"\xC3\x85" => "\xC5",
"\xC3\x84" => "\xC4",
"\xC3\x96" => "\xD6"
);
return strtr($string, $transform);
}
Kom ihåg att ta backup på allt möjligt innan.
/D
Gah, otroligt att de inte fixar svenska tecken i användarnamn utan problem. UTF8 borde gälla hela vägen, men ska man supporta MySQL före 4.2.1 får man sådana här problem...
Jakob Persson - Grundare av phpBB Sverige - IT-konsult - http://www.jakob-persson.com
The Complete phpBB Template Design Guide (phpBB 2.x): http://archive.jakob-persson.com/articl ... index.html
The Complete phpBB Template Design Guide (phpBB 2.x): http://archive.jakob-persson.com/articl ... index.html
- John Hjorth
- Extra aktiv medlem

- Inlägg: 195
- Blev medlem: 2006-01-13 03:03
- Kontakt:
- John Hjorth
- Extra aktiv medlem

- Inlägg: 195
- Blev medlem: 2006-01-13 03:03
- Kontakt:
Re: Lösenordskonvertering
Det var visst inte teamleadern men en ur utvecklingsgruppen var det och han borde veta.ErikJ skrev:Läste på Area51 om hur man kunde få lösenord med grekiska bokstäver att fungera efter en konvertering:
http://area51.phpbb.com/phpBB/viewtopic.php?f=3&t=28328
/J
- John Hjorth
- Extra aktiv medlem

- Inlägg: 195
- Blev medlem: 2006-01-13 03:03
- Kontakt:
En annan detalj är att phpBB3 kräver minst 6 tecken i lösenordet. Är du säker på att det inte är det som spökar?
När jag konverterar mellan forumsystem brukar jag strunta i att försöka ta med lösenorden. Istället gör jag ett skript som autogenererar nya lösenord till alla användare. Sen mailas det nya lösenordet till adressen dom har angett när dom reggade och dom uppmanas att logga in och byta lösenord.
/J
När jag konverterar mellan forumsystem brukar jag strunta i att försöka ta med lösenorden. Istället gör jag ett skript som autogenererar nya lösenord till alla användare. Sen mailas det nya lösenordet till adressen dom har angett när dom reggade och dom uppmanas att logga in och byta lösenord.
/J
Testade med 6 bokstäver men det gick inte heller. Nu vet jag dock var felet sitter, jag la in rader här och där i auth_db.php om att maila mig och det visar sig att raden du tipsade om att ändra ligger inuti en IF-sats som blir falsk om lösenordet slutar på åäö.
Med lösenordet åäö blir $password = åäö och $password_new_format=åäö ??????
Kod: Markera allt
// in phpBB2 passwords were used exactly as they were sent, with addslashes applied
$password_old_format = isset($_REQUEST['password']) ? (string) $_REQUEST['password'] : '';
$password_old_format = (!STRIP) ? addslashes($password_old_format) : $password_old_format;
$password_new_format = '';
set_var($password_new_format, stripslashes($password_old_format), 'string');
if ($password == $password_new_format)
{åäö är åäö på UTF8-språk. phpBB3 har Charset UTF8 och din webbläsare konverterar åäö till åäö. phpBB2 har charset iso-8859-1. Charset = teckentabell.
Raden i IF-satsen är på rätt plats tror jag. Jag har iofs inte hunnit titta på den igen än, men jag tror att felet är i själva konverteringen. Ska försöka få tid till det under veckan.
phpBB2 sparade ner lösenordet som den kom från den som reggade in. phpBB3 decodar den från UTF8 innan den sparas eller kollas.
/J
Raden i IF-satsen är på rätt plats tror jag. Jag har iofs inte hunnit titta på den igen än, men jag tror att felet är i själva konverteringen. Ska försöka få tid till det under veckan.
phpBB2 sparade ner lösenordet som den kom från den som reggade in. phpBB3 decodar den från UTF8 innan den sparas eller kollas.
/J
Vilka är online
Användare som besöker denna kategori: 0 och 0 gäster



