如何从脚本中创建新的Joomla用户帐户?

2022-08-30 19:00:47

我们正在为Joomla创建一个XML API,允许合作伙伴网站在我们的网站上为其用户创建新帐户。

我们已经创建了一个独立的 PHP 脚本来处理和验证 API 请求,但现在我们需要实际创建新帐户。我们最初考虑只是做一个CURL调用来提交注册表单,但我们意识到用户令牌存在问题。有没有另一种干净的方法来创建用户帐户,而无需进入Joomla的胆量?如果我们确实必须做一些手术,那么最好的方法是什么?


答案 1

你应该使用Joomla内部类,比如JUser,因为有很多内部逻辑,比如密码腌制。创建一个自定义脚本,该脚本使用 API 请求中的值,并使用 Joomla 用户类中的方法将用户保存在数据库中。

使用自定义代码添加joomla用户的两种方法是一个很棒的教程。这种方法有效。我在一些项目中使用了这种方法。

如果您必须在Joomla之外访问Joomla框架,请检查此资源


答案 2

根据waitinforatrain的答案,它对登录用户来说不能正常工作(如果你在后端使用它实际上是危险的),我已经修改了它,在这里,它完全为我工作。请注意,这是针对Joomla 2.5.6的,而这个线程最初是针对1.5的,因此上面的答案如下:

function addJoomlaUser($name, $username, $password, $email) {
    jimport('joomla.user.helper');

    $data = array(
        "name"=>$name,
        "username"=>$username,
        "password"=>$password,
        "password2"=>$password,
        "email"=>$email,
        "block"=>0,
        "groups"=>array("1","2")
    );

    $user = new JUser;
    //Write to database
    if(!$user->bind($data)) {
        throw new Exception("Could not bind data. Error: " . $user->getError());
    }
    if (!$user->save()) {
        throw new Exception("Could not save user. Error: " . $user->getError());
    }

    return $user->id;
 }

推荐