如何从脚本中创建新的Joomla用户帐户?
我们正在为Joomla创建一个XML API,允许合作伙伴网站在我们的网站上为其用户创建新帐户。
我们已经创建了一个独立的 PHP 脚本来处理和验证 API 请求,但现在我们需要实际创建新帐户。我们最初考虑只是做一个CURL调用来提交注册表单,但我们意识到用户令牌存在问题。有没有另一种干净的方法来创建用户帐户,而无需进入Joomla的胆量?如果我们确实必须做一些手术,那么最好的方法是什么?
我们正在为Joomla创建一个XML API,允许合作伙伴网站在我们的网站上为其用户创建新帐户。
我们已经创建了一个独立的 PHP 脚本来处理和验证 API 请求,但现在我们需要实际创建新帐户。我们最初考虑只是做一个CURL调用来提交注册表单,但我们意识到用户令牌存在问题。有没有另一种干净的方法来创建用户帐户,而无需进入Joomla的胆量?如果我们确实必须做一些手术,那么最好的方法是什么?
你应该使用Joomla内部类,比如JUser,因为有很多内部逻辑,比如密码腌制。创建一个自定义脚本,该脚本使用 API 请求中的值,并使用 Joomla 用户类中的方法将用户保存在数据库中。
使用自定义代码添加joomla用户的两种方法是一个很棒的教程。这种方法有效。我在一些项目中使用了这种方法。
如果您必须在Joomla之外访问Joomla框架,请检查此资源。
根据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;
}