Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Joomla 3.3-如何存储用户密码?_Php_Mysql_Joomla - Fatal编程技术网

Php Joomla 3.3-如何存储用户密码?

Php Joomla 3.3-如何存储用户密码?,php,mysql,joomla,Php,Mysql,Joomla,我正在尝试使用joomla 3.3.6在插件中存储用户密码 根据Joomla文件: 我创建了以下函数: /** * * Update Password * * @param unknown $idUser * @param unknown $password */ public function updateUserPassword($idUser, $password) { // Create a new query object. $query =

我正在尝试使用joomla 3.3.6在插件中存储用户密码

根据Joomla文件:

我创建了以下函数:

    /**
 * 
 * Update Password
 * 
 * @param unknown $idUser
 * @param unknown $password
 */
public function updateUserPassword($idUser, $password) {

    // Create a new query object.
    $query = $this->db->getQuery ( true );
    $value = JUserHelper::hashPassword($password);

    // Prepare the insert query.
    $query->update('#__users')
        ->set('password  = ' . $this->db->quote($value))
        ->where('id = ' . $idUser);

    // Set the query using our newly populated query object and execute it.
    $this->db->setQuery ($query);

    $updateResult = $this->db->execute ();
    if ($updateResult == false) {
        $errorMsg = $this->db->getErrorMsg ();
        var_dump($errorMsg);
    } else {
        echo "Update Done";
    }   
}
执行此代码时没有任何错误或警告,但表users中的用户记录保持不变

$query值为:

UPDATE #__users
SET password  = '$2y$10$hO2MfDLfG5ICy2yhZWXZG.GCQ89vYw26KHVisXuuD8baRU9WtuDR.'
WHERE id = 192
$query看起来不错。在mysqlworkbench中执行查询时,将#uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

但是,php代码不起作用

有人对此有线索吗

开发人员

编辑 代码更改:在execute语句中添加错误处理。
“更新完成”消息已打印。

从您的代码片段中,我看不出您是如何确定代码执行时没有任何错误的

来自Joomla文档 execute语句的返回值应为游标或false

$updateResult = $this->db->execute();
if($updateResult == false) {
    $errorMsg = $this->db->getErrorMsg();
    //display this in your method of choice
}
根据您的服务器,可能还有web服务器错误日志条目。在我的LAMP开发机器上,它位于/var/log/apache2/error\u log中

修改Joomla表记录的替代方法

$user_record = new stdClass();
$user_record->id = $idUser;
$user_record->password = $password;

$result = JFactory::getDbo()->insertObject('#__users', $user_record, $idUser);

谢谢你的回复。我用你的代码错误处理编辑了我的帖子$在我的测试用例中,updateResult等于true。当我执行我的函数时,Apache日志是空的。@很抱歉。我建议的任何其他事情都是抓救命稻草。有一种替代方法可以更新我将在回答中输入的对象。这似乎不太可能有什么不同。我肯定你已经仔细检查过了,但我还是要问……你是否用某种测试密码而不是$password函数来尝试你的函数?问题解决了:我问题中的代码运行良好。问题出在另一个函数上,该函数在其他时间更新我的用户对象。谢谢你的帮助和时间。