0

我正在制作一个自定义 joomla 帐户创建脚本,该脚本还会生成一个随机密码,并通过邮件发送给用户。帐户已创建,但密码始终无效。

我已经捕获了用户、电子邮件等。

$password = rand(1000,99999);
 $password2  = md5($password);
$query = "INSERT INTO jos_users          (username,email,name,usertype,sendEmail,gid,params,registerDate,password) 
VALUES (' $username','$email','$name','Registered','1','18','admin_language=
 language=
 editor=
helpsite=
timezone=0',NOW(),'$password2')";   
    $result = mysql_query($query);
     $uid=mysql_insert_id();

等…………等

我已经尝试过这些变化

  sha1($_POST['pword']);

 $password = rand(1000,9999);
 $salt = md5(rand(1000,9999));
 $password2 = md5($password.$salt).":".$salt;

仍然当我发送用户 $password 时它是错误的并且无法登录。我能错过什么吗?

  /////////////////////////////full script just in case///////////////////////////////

  $password = rand(1000,99999);
  $password2  = md5($password);
 die($password2);
 $query = "INSERT INTO jos_users     (username,email,name,usertype,sendEmail,gid,params,registerDate,password) 
 VALUES (' $username','$email','$name','Registered','1','18','admin_language=
language=
editor=
helpsite=
timezone=0',NOW(),'$password2')";   
    $result = mysql_query($query);
     $uid=mysql_insert_id();


    $query = "INSERT INTO #__spcClient (clientID,GSM,StartingUnits,Units) VALUES ('$uid','$GSM','$units','$units')";    
    $myfunctions->dbquery($query);

    $query = "INSERT INTO jos_core_acl_aro (section_value,value,name) VALUES ('users','$uid','$name')";
    $result = mysql_query($query);
     $uid2=mysql_insert_id();
    //$rowcount = $db->getAffectedRows($result);
    $query = "INSERT INTO jos_core_acl_groups_aro_map (group_id,aro_id) VALUES ('18','".$uid2."')";
    $result = mysql_query($query);

////////////////////////////////////////

4

2 回答 2

2

我不确定您为什么尝试了所有这些变体,但为了将来在 Joomla 中参考!你可以/libraries/joomla/user/特别看看你可能想看看helper.php其中包含的方法getCryptedPassword()。默认加密('md5-hex')切换到此代码:

case 'md5-hex' :
default :
    $encrypted = ($salt) ? md5($plaintext.$salt) : md5($plaintext);
    return ($show_encrypt) ? '{MD5}'.$encrypted : $encrypted;

还值得研究绑定提交的数据并创建密码数组(包含盐和加密密码)的bind()方法。user.php

$array['password'] = $crypt.':'.$salt;
于 2013-02-08T22:26:44.307 回答
0

你让我朝着正确的方向前进。谢谢。我认为 joomla 有一个错误。我在插入后执行了数据库更新,它可以工作。我将密码重置为自身!

           '$query  = 'UPDATE #__users'
            . ' SET password = '.$db->Quote($password)
            . ' , activation = ""'
            . ' WHERE id = '.(int) $id
            . ' AND block = 0';

    $db->setQuery($query);

    // Save the password
    $db->query();'
于 2013-02-09T09:29:47.243 回答