如何生成 Joomla 密码?

How to generate a Joomla password?

我需要使用 Joomla crypt 密码才能注册用户。 我现在使用的是:

$query="update table_user set password=md5(password) where id_user='{$form->data['id_user']}'";
$db->setQuery($query);
$db->query();

我的问题是:如何将此密码转换为像 joomla 密码一样有效且加密的密码?

这个问题不重复,因为旧问题太老了,目前不能应用。

您需要按照以下方式进行。

query= "UPDATE table_user SET password=MD5(‘new password’) WHERE usertype = 'Super Administrator'";

$db->setQuery($query);

$db->query();

Joomla 3.x 使用 Bycrypt,而不是 MD5,因此您当前的方法不正确。

您可以使用以下方法生成哈希:

jimport('joomla.user.helper');
JUserHelper::hashPassword($password);

其中 $password 是密码变量。

您可能还想考虑为您的数据库查询使用 Joomla 编码标准:

https://docs.joomla.org/Inserting,_Updating_and_Removing_data_using_JDatabase

希望对您有所帮助

更新:

jimport('joomla.user.helper');

$password = 'however you get the password';
$hash = JUserHelper::hashPassword($password);

$db = JFactory::getDbo();
$query = $db->getQuery(true);

$query->update($db->quoteName('table_user'))
      ->set($db->quoteName('password') . ' = ' . $db->quote($hash))
      ->where($db->quoteName('id_user') . ' = ' . (int)$form->data['id_user']);
 
$db->setQuery($query);
 
$result = $db->execute();

您还需要更新 $password = 'however you get the password';,因为我不知道您从哪里获得密码