我已经搜索并找到了一种方法来使用JUser,但是当我尝试脚本时,它说无法找到包含文件,并且它在服务器上不存在。我不知道Joomla 3.0是否有所不同,所以我在寻求帮助。这是我试过的脚本:
<?php
define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(__FILE__) );
define( 'DS', DIRECTORY_SEPARATOR );
/* Required Files */
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$app = JFactory::getApplication('site');
$app->initialise();
require_once JPATH_ROOT.DS.'components'.DS.'com_users'.DS.'models'.DS.'registration.php';
require_once JPATH_ROOT.DS.'libraries'.DS.'joomla'.DS.'application'.DS.'component'.DS.'helper.php';
$model = new UsersModelRegistration();
jimport('joomla.mail.helper');
jimport('joomla.user.helper');
$username = 'jimporttest';
$name = 'J Port2';
$email = 'test @ mail.com';
$password = 'test';
$data = array( 'username' => $username,
'name' => $name,
'email1' => $email,
'password1' => $password, // First password field
'password2' => $password, // Confirm password field
'block' => 0 );
echo $model->register($data);
?>
答案 0 :(得分:4)
您必须在require_once子句中使用JPATH_BASE(您使用的是未定义的JPATH_BASE_ROOT)。 另外在JOOMLA 3.0中,helper.php也不在那个位置。
试试这段代码:
<?php
define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(__FILE__) );
define( 'DS', DIRECTORY_SEPARATOR );
/* Required Files */
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$app = JFactory::getApplication('site');
$app->initialise();
require_once(JPATH_BASE.DS.'components'.DS.'com_users'.DS.'models'.DS.'registration.php';
//not necessary
//require_once(JPATH_BASE.DS.'libraries'.DS.'joomla'.DS.'application'.DS.'component'.DS.'helper.php';
$model = new UsersModelRegistration();
jimport('joomla.mail.helper');
jimport('joomla.user.helper');
$username = 'jimporttest';
$name = 'J Port2';
$email = 'test @ mail.com';
$password = 'test';
$data = array( 'username' => $username,
'name' => $name,
'email1' => $email,
'password1' => $password, // First password field
'password2' => $password, // Confirm password field
'block' => 0 );
echo $model->register($data);
?>
我在我的joomla 3.0安装中尝试过这种方法。
安德烈
答案 1 :(得分:0)
这是您可以使用的代码。
$data['name'] = $fname . ' ' . $lname;
$data['username'] = $email;
$data['email1'] = $email;
$data['email2'] = $email;
$pwd = substr(md5($email . $fname . time()), 0, 6);
$data['password1'] = $pwd;
$data['password2'] = $pwd;
JFactory::getLanguage()->load('com_users');
JModel::addIncludePath(JPATH_ROOT . '/components/com_users/models');
$model = JModel::getInstance('Registration', 'UsersModel');
$return = $model->register($data);
答案 2 :(得分:0)
对于&gt; = Joomla 3,我们需要使用以下代码。改编自&#34; JModel&#34;到&#34; JModelLegacy&#34;。 Click here详细查看。
$data['name'] = $fname . ' ' . $lname;
$data['username'] = $email;
$data['email1'] = $email;
$data['email2'] = $email;
$pwd = substr(md5($email . $fname . time()), 0, 6);
$data['password1'] = $pwd;
$data['password2'] = $pwd;
JFactory::getLanguage()->load('com_users');
JModelLegacy::addIncludePath(JPATH_ROOT . '/components/com_users/models');
$model = JModelLegacy::getInstance('Registration', 'UsersModel');
$return = $model->register($data);
答案 3 :(得分:0)
除非您的文件位于安装Joomla系统的根文件夹中,否则肯定会出现此错误。
dirname(__FILE__)
返回工作文件路径。因此,您可能需要相应地修改路径。使用
define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(__FILE__) );
echo JPATH_BASE;
确保&#39;包含&#39;与JPATH_BASE同一路径中的文件夹返回。例如,如果您的文件位于&www; www / example / test&#39;文件夹,然后使用
define( 'JPATH_BASE', realpath(dirname(__FILE__).'../../'));
获取正确的基本路径。
我也在你的代码中发现了一些错误。使用此工作代码进行测试。
<?php
define( '_JEXEC', 1 );
define( 'JPATH_BASE', realpath(dirname(__FILE__).'../../'));
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$app = JFactory::getApplication('site');
$app->initialise();
require_once JPATH_ROOT.DS.'components'.DS.'com_users'.DS.'models'.DS.'registration.php';
$model = new UsersModelRegistration();
jimport('joomla.mail.helper');
jimport('joomla.user.helper');
$username = 'ben';
$name = 'ben';
$email = 'test@mail.com';
$password = 'test';
$data = array( 'username' => $username,
'name' => $name,
'email1' => $email,
'password1' => $password, // First password field
'password2' => $password, // Confirm password field
'block' => 0 );
$return = $model->register($data);
?>
&#39; ../../ 39;
的一部分define( 'JPATH_BASE', realpath(dirname(__FILE__).'../../'));
取决于我之前解释过的根文件夹的偏差。