Показать сообщение отдельно

  #3  
Старый 15.01.2006, 16:31
DetMyl
Участник форума
Регистрация: 17.12.2005
Сообщений: 121
Провел на форуме:
551495

Репутация: 227
По умолчанию

Цитата:
Сообщение от 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) == ) {
    
$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($passsubstr($myrow['pass'], 02)) == $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' это ключ активации....
 
Ответить с цитированием