Joomla的密码不是简单的用MD5加密。
数据库中的密码是这样存储的:(用户名和密码都是admin)
ab9989726cacc2a382866650fe6c809d:64tjXqkuMhKth3GK9o6uBMilMTJhKJIe
中间是有冒号分开的,我们把第一部分记为part1 第二部分记为part2
即:
part1:part2
虽然我们不知道part2是怎么加密来的(如果有哪位知道,还请指点一下!)
但是通过看joomla的源代码,可以知道part1是这样来的 part1=md5(username.part2);
我们可以写自己的函数来验证用户名和密码。
<?php
define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(__FILE__) );//this is when we are in the root
define( '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:64tjXqkuMhKth3GK9o6uBMilMTJhKJIe
ab9989726cacc2a382866650fe6c809d