Сообщение от
qPhoenix
Перерыл половину скриптов, так и не нашел алгоритма... (с ПХП у мну слабенько

) Еси кто сталкивался с таким зверем - поведайте плз, как же там все таки пасс шифруют...
Итак: вот ф-ция которая отвечает за логин:
PHP код:
function login($uname, $pass) {
global $myts, $db;
$uname = $myts->makeTboxData4Save($uname);
$result = $db->query("SELECT * FROM ".$db->prefix('users')." WHERE uname='".$uname."'");
if ( $db->num_rows($result) == 1 ) {
$convert = false;
$passed = false;
$myrow = $db->fetch_array($result);
if ( !empty($myrow['uid']) ) {
if ( $myrow['pass'] == md5($pass) ) {
$passed = true;
} elseif ( $pass == $myrow['pass'] ) {
$convert = true;
$passed = true;
} elseif (function_exists('crypt')) {
if (crypt($pass, substr($myrow['pass'], 0, 2)) == $myrow['pass'] ) {
$convert = true;
$passed = true;
}
}
if ( $convert ) {
$newpass = md5($pass);
$db->query("UPDATE ".$db->prefix('users')." SET pass='$newpass' WHERE uname='$uname'");
}
if ( $passed ) {
return new XoopsUser($myrow);
}
}
}
return false;
}
Есть 3 варианта:
1)if $myrow['pass'] == md5($pass) , пароль зашифрован MD5, если совпал, все ок.
2)elseif $pass == $myrow['pass'] , пароль лежит в базе незашифрованный, если совпал, все ок и зашифровать пароль с MD5 и записать в базу...
3) elseif (function_exists('crypt')) {
if (crypt($pass, substr($myrow['pass'], 0, 2)) == $myrow['pass'] )
Хммм. в этом случае я не уверен, но мне кажется что бывает вариант, когда пароль зашифроан с помощью некоей ф-ции crypt, в этом случае ,если совпало то ок и зашифровать пароль с MD5 и записать в базу...
Т.е. пароль должен быть зашифрован в MD5, проверь внимательней.
P.S.: А 'actkey' это ключ активации....