程序化的 joomla 用户创建与登录显示冲突

programmatic joomla user creation conflict with login display

好的,所以我们目前正在使用 joomla 的用户 class 在我们的员工页面中创建新员工。它运行良好并成功创建了新的用户帐户。但是我们有一个问题,因为屏幕顶部的用户帐户按钮也依赖于对 joomla 用户对象的调用,一旦我们创建一个新用户,在创建后显示的名称就是我们刚刚创建的用户的名称。现在,一旦您刷新或移至另一页,问题就会消失。

如果我们希望避免此实例可能引起的混淆,将我们用于创建新用户的方法移出页面并移至单独的文件中可能是有意义的,对吗?或者它是否不值得,因为它没有其他效果,只是一个临时名称,用户无需任何实际努力即可解析?

这是我们使用的代码:

$udata = array(
    "name"=>$_POST['firstName'].' '.$_POST['surName'],
    "username"=>$_POST['username'],
    "password"=>$_POST['password'],
    "password2"=>$_POST['password'],
    "email"=>$_POST['companyEmail'],
    "block"=>0,
    "groups"=>array("2","6")
);

$user = new JUser;
//Write to database
if(!$user->bind($udata)) {
    echo "<script>alert('Could not bind data. Error: ".$user->getError()."</script>";
}
if (!$user->save()) {
    echo "<script>alert('Could not save user. Error: " . $user->getError()."</script>";
} else { 
    echo "<script>alert('New User $user->id Created');</script>";
    // Script Here to enter additional details in usg_usg_staff table

代码位于页面 usg-staff.php。 还是删除 user->name 调用会更明智?

我终于解决了这个问题。我所要做的就是确保在创建新用户后,我使用 JFactory::getUser() 将 $user 变量设置回活动用户数据。我真的想多了。它只显示刚刚创建的用户,因为在我们的 joomla table 中创建用户后,我没有想过将其设置回来。