我不清楚你想要做什麼。
最後可能的解決方案是,但首先,這是密碼的檢查方式。
md5(md5(pass+salt))
是原始文本密碼存儲在數據庫中的方式。
當您通過論壇頂部的登錄字段登錄時,在用戶名和密碼發佈到服務器之前,JavaScript用於運行md5(password)
。如果JavaScript未啓用,則會發布純文本密碼。
的verify_authentication()
函數嘗試三種方法來驗證密碼:
if (
$vbulletin->userinfo['password'] != iif($password AND !$md5password, md5(md5($password) . $vbulletin->userinfo['salt']), '') AND
$vbulletin->userinfo['password'] != iif($md5password, md5($md5password . $vbulletin->userinfo['salt']), '') AND
$vbulletin->userinfo['password'] != iif($md5password_utf, md5($md5password_utf . $vbulletin->userinfo['salt']), '')
)
如果明文口令($password
)被髮送,它使其通過md5(md5(pass+salt))
並與來自數據庫的散列密碼進行比較:
$vbulletin->userinfo['password'] != iif($password AND !$md5password, md5(md5($password) . $vbulletin->userinfo['salt']), '')
如果密碼由JavaScript($md5password
)散列,它是通過md5(pass+salt)
通過,並與來自數據庫的散列密碼進行比較:
$vbulletin->userinfo['password'] != iif($md5password, md5($md5password . $vbulletin->userinfo['salt']), '')
如果密碼由JavaScript散列並且正在使用UTF ($md5password_utf
),它是通過md5(pass+salt)
通過,並與來自數據庫的散列密碼進行比較:
$vbulletin->userinfo['password'] != iif($md5password_utf, md5($md5password_utf . $vbulletin->userinfo['salt']), '')
如果您希望某個用戶名能夠在沒有密碼的情況下登錄,則可以嘗試使用login_failure
鉤子添加插件。你的plugin可以檢查用戶名,如果它匹配你正在使用的特定用戶,你可以繼續登錄過程。該插件將包含:
if ($vbulletin->GPC['vb_login_username'] == 'your_username')
{
exec_unstrike_user($vbulletin->GPC['vb_login_username']);
process_new_login($vbulletin->GPC['logintype'], $vbulletin->GPC['cookieuser'], $vbulletin->GPC['cssprefs']);
do_login_redirect();
}