试试这个,
以下代码正在创建 Joomla 标准密码(旧版本 1.5、1.7 等)。
jimport('joomla.user.helper');
$salt = JUserHelper::genRandomPassword(32);
$crypt = JUserHelper::getCryptedPassword($password_choose, $salt);
$password = $crypt.':'.$salt;
Joomla 3.2+引入了 PHP 的密码算法bcrypt,但它至少需要 PHP 5.3+如果您打算使用bcrypt,请确保您的服务器 PHP 版本能够支持此功能,请在此处阅读更多信息。
其他版本的 Joomla 使用以下方法(Joomla 3.x)
jimport('joomla.user.helper');
$yourpass = JUserHelper::hashPassword($password_choose);
旧算法在最新版本中也可以正常工作,唯一的区别是旧版本创建 65 个字符的密码,而新版本创建 34 个字符的字符串。总是使用更新的版本
此外,如果您使用外部脚本,则应包括如下 Joomla 框架。这应该在您的外部 php 文件的最顶部
define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(__FILE__) );//this is when we are in the root
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();
您还提到您必须检查用户凭据,然后无需检查密码格式,所有东西都只需在框架加载后使用下面的代码。
$credentials['username'] = $data['username']; //user entered name
$credentials['password'] = $data['password']; //users entered password
$app = JFactory::getApplication();
$error = $app->login($credentials, $options);
if (!JError::isError($error)) {
// login success
}
else{
//Failed attempt
}
希望能帮助到你..