Joomla的密碼不是簡單的用MD5加密。
資料庫中的密碼是這樣儲存的:(使用者名稱和密碼都是admin)
ab9989726cacc2a382866650fe6c809d:64tjXqkuMhKth3GK9o6uBMilMTJhKJIe
中間是有冒號分開的,我們把第一部分記為part1 第二部分記為part2
即:
part1:part2
雖然我們不知道part2是怎麼加密來的(如果有哪位知道,還請指點一下!)
但是通過看joomla的原始碼,可以知道part1是這樣來的 part1=md5(username.part2);
我們可以寫自己的函數來驗證使用者名稱和密碼。
<?phpdefine( '_JEXEC', 1 );define('JPATH_BASE', dirname(__FILE__) );//this is when we are in the rootdefine( 'DS', DIRECTORY_SEPARATOR);//引入Joomla架構,以便使用joomla的類庫require_once (JPATH_BASE.DS.'includes'.DS.'defines.php');require_once (JPATH_BASE.DS.'includes'.DS.'framework.php');$mainframe =&JFactory::getApplication('site');$mainframe->initialise();$user = &JFactory::getUser();if(!$user->get("username")){?>你還未登入!<?php}else{echo $user->get("password")."<br>";//echo JUserHelper::getCryptedPassword("admin");//echo md5("admin");//使用Joomla的類庫來查詢$db= JFactory::getDbo();$query= $db->getQuery(true);$query->select('id, password');$query->from('#__users');$query->where('username='.$db->Quote('admin'));$db->setQuery($query);$result = $db->loadObject();$parts= explode(':', $result->password);$testcrypt = md5("admin".$parts[1]);echo $testcrypt;?><?php }?>
ab9989726cacc2a382866650fe6c809d:64tjXqkuMhKth3GK9o6uBMilMTJhKJIeab9989726cacc2a382866650fe6c809d