Joomla登录验证,密码加密方式

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




你可能感兴趣的:(Joomla登录验证,密码加密方式)