UCenter密碼忘記怎么辦?這個問題小編在幾年前就碰到過,當時好像是修改了配置文件+一個指定字符的md5碼就解決了,下面小編再來為各位介紹UCenter密碼忘記問題的解決辦法.
UCenter的密碼經常出問題,以前一直都是用Discuz的tools插件進行改密碼,不過今天需要遷移UCenter,在遷移未完成前新的UCenter就等不進去了,而tools又用不了,無奈,只好另找辦法.
網上搜索得知,UCenter的創始人密碼保存于“UCenter目錄/data/config.inc.php”中,不過查到的資料顯示,創始人密碼是明文存儲的(UCenter1.5?),但我使用的UCenter已經是加salt后md5的值,因此較難處理.
后來閱讀了一下源碼,找到了后臺登陸的處理方法,位于UCenter目錄/control/admin/user.php的onlogin方法.
這里忍不住吐槽一下Discuz的架構,雖然UCenter采用了MVC分層的設計,但是架構的設計太過簡陋,代碼結構非常不清晰,而Discuz的架構則更為復雜混亂.
經過閱讀后得知,創始人密碼是UC_FOUNDERPW常量,它在config.inc.php定義,該常量用md5(md5($password).UC_FOUNDERSALT)進行加鹽加密,那么處理方法很簡單了.
自己新建一個PHP文件,輸入以下代碼:
- <?php
- echo(md5(md5('新的密碼') .'salt值')); //開源軟件:Vevb.com
- ?>
salt值可以直接使用config.inc.php中UC_FOUNDERSALT的定義,也可以重定義一個新值,但需要在config.in.php中重定義UC_FOUNDERSALT的值,運行該文件之后將輸出的結果復制到config.inc.php中,重定義UC_FOUNDERPW的值即可.
現在,UCenter創始人密碼已經被更新,可以使用新密碼登陸了.
事實上,我用了更簡單粗暴的方法,我在control/admin/user.php中的第81行:
$md5password = md5(md5($password).UC_FOUNDERSALT);
后面插了一句斷點:die($md5password);
然后我嘗試用新密碼登陸,斷點顯示出了密碼被加密后的值,然后將密碼復制到config.inc.php,刪除斷點用新密碼登陸,成功.
新聞熱點