如何 return 来自 Joomla 框架的 user_id insert/update 一个(新)用户
How to return the user_id from the Joomla-Framework on insert/update a (new) user
我尝试 insert/update 新用户从外部脚本访问 joomla 页面。下面的代码工作得很好。但是,我需要添加或更新用户的 user_id,但脚本 returns 只是 "useractivate"。
Joomla Forum/Documentation (https://github.com/joomla/joomla-cms/issues/9644) 建议使用
$db->insertid();
但是我没能得到这份工作。
到目前为止,我试过这个:
$db = JFactory::getDbo();
var_dup($db->insertid());
得到结果:0
用户创建
<?php
define( '_JEXEC', 1 );
define('JPATH_BASE', __DIR__ );
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$language = JFactory::getLanguage();
$language->load('com_users', JPATH_BASE);
JFactory::getLanguage()->load('mod_login', JPATH_BASE, 'de-DE', true);
$app = JFactory::getApplication('site');
$app->initialise();
require_once(JPATH_BASE.DS.'components'.DS.'com_users'.DS.'models'.DS.'registration.php');
$model = new UsersModelRegistration();
jimport('joomla.mail.helper');
jimport('joomla.user.helper');
$username = 'jimporttest';
$name = 'J Port2';
$email = 'test@test.de';
$password = 'test';
$data = array(
'username' => $username,
'name' => $name,
'email1' => $email,
'password1' => $password,
'password2' => $password,
'block' => 0
);
$return = $model->register($data);
var_dump($return);
PS: 我必须使用 joomla-framework 并且不能使用简单的 mysql 查询,因为新用户必须激活其帐户并轻松设置新密码。
或者,您可以根据用于创建用户的用户名加载用户。
$return = $model->register($data);
if($return == 'useractivate'){
$userid = JFactory::getUser($username)->id;
}
我尝试 insert/update 新用户从外部脚本访问 joomla 页面。下面的代码工作得很好。但是,我需要添加或更新用户的 user_id,但脚本 returns 只是 "useractivate"。
Joomla Forum/Documentation (https://github.com/joomla/joomla-cms/issues/9644) 建议使用
$db->insertid();
但是我没能得到这份工作。 到目前为止,我试过这个:
$db = JFactory::getDbo();
var_dup($db->insertid());
得到结果:0
用户创建
<?php
define( '_JEXEC', 1 );
define('JPATH_BASE', __DIR__ );
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$language = JFactory::getLanguage();
$language->load('com_users', JPATH_BASE);
JFactory::getLanguage()->load('mod_login', JPATH_BASE, 'de-DE', true);
$app = JFactory::getApplication('site');
$app->initialise();
require_once(JPATH_BASE.DS.'components'.DS.'com_users'.DS.'models'.DS.'registration.php');
$model = new UsersModelRegistration();
jimport('joomla.mail.helper');
jimport('joomla.user.helper');
$username = 'jimporttest';
$name = 'J Port2';
$email = 'test@test.de';
$password = 'test';
$data = array(
'username' => $username,
'name' => $name,
'email1' => $email,
'password1' => $password,
'password2' => $password,
'block' => 0
);
$return = $model->register($data);
var_dump($return);
PS: 我必须使用 joomla-framework 并且不能使用简单的 mysql 查询,因为新用户必须激活其帐户并轻松设置新密码。
或者,您可以根据用于创建用户的用户名加载用户。
$return = $model->register($data);
if($return == 'useractivate'){
$userid = JFactory::getUser($username)->id;
}