首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Joomla 2.5使用dbl in java的新注册用户php脚本

问Joomla 2.5使用dbl in java的新注册用户php脚本
EN

Stack Overflow用户
提问于 2012-04-05 20:50:48
回答 1查看 4.6K关注 0票数 0

我已经在html中创建了一个简单的“创建一个帐户”表单,它与一些java连接在一起,用于双选择的方法。我还希望这个表单在Joomla中创建用户,并在单击create按钮后将其登录。

双重选择很好,但Joomla2.5的新用户脚本不工作,没有错误,但它只是没有注册用户。我尝试过将php脚本(见下文)放置在堆栈溢出上,以生成一个新用户,但它不起作用。

是否可以将这两种类型的脚本一起运行在一个表单上?如果是的话,我哪里出错了?谢谢!

代码语言:javascript
复制
 require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );

$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();

//Check for request forgeries, we comment this out since tokens are not generated in the html page
//JRequest::checkToken() or jexit( 'Invalid Token' );

//Get required system objects

$user         = clone(JFactory::getUser());
$pathway          = & $mainframe->getPathway();
$config       = & JFactory::getConfig();
$authorize        = & JFactory::getACL();
$document       = & JFactory::getDocument();

//If user registration is not allowed, show 403 not authorized(Not needed)

$usersConfig = &JComponentHelper::getParams( 'com_users' );
if ($usersConfig->get('allowUserRegistration') == '0')
    {
        JError::raiseError( 403, JText::_( 'Access Forbidden' ));
        return;
    }

//Initialize new usertype setting

$newUsertype = $usersConfig->get( 'new_usertype' );
if (!$newUsertype)
    {
        $newUsertype = 'Registered';
    }

//Bind the post array to the user object
if (!$user->bind( JRequest::get('post'), 'usertype' ))
    {
        JError::raiseError( 500, $user->getError());
    }

//Set some initial user values

$user->set('id', 0);
$user->set('usertype', '');
$user->set('gid', $authorize->get_group_id( '', $newUsertype, 'ARO' ));

$date =& JFactory::getDate();
$user->set('registerDate', $date->toMySQL());

//If user activation is turned on, we need to set the activation information(Not needed)

$useractivation = $usersConfig->get( 'useractivation' );
if ($useractivation == '1')
    {
        jimport('joomla.user.helper');
        $user->set('activation', md5( JUserHelper::genRandomPassword()) );
        $user->set('block', '1');
    }

//Save the details of the user

$user->save();
EN

回答 1

Stack Overflow用户

发布于 2012-04-16 12:01:00

我认为您正在尝试创建一个API,以便在Joomla中注册来自不同环境的用户。您的代码在Joomla 1.5/1.6中运行良好,但1.7以后就不行了.下面的片段适用于我,稍作修改。

代码语言:javascript
复制
<?php
/*
 * Created on 13-Apr-12
 *
 * To change the template for this generated file go to
 * Window - Preferences - PHPeclipse - PHP - Code Templates
 */
 /*
  * loading Joomla environment
  */
define( '_JEXEC', 1 );
$JUnit_home = $_SERVER['SCRIPT_FILENAME'];
//define('JPATH_BASE', dirname(__FILE__) );//this is when we are in the root


define( 'DS', DIRECTORY_SEPARATOR );

require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );

function register_user ($email, $password){

$firstname = $email; // generate $firstname
$lastname = ''; // generate $lastname
$username = $email; // username is the same as email


/*
I handle this code as if it is a snippet of a method or function!!

First set up some variables/objects     */


//$acl =& JFactory::getACL(); Acl will work only in Joomla1.5/1.6       

/* get the com_user params */
$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();

$usersParams = &JComponentHelper::getParams( 'com_users' ); // load the Params

// "generate" a new JUser Object
$user = JFactory::getUser(0); // it's important to set the "0" otherwise your admin user information will be loaded

$data = array(); // array for all user settings


//original logic of name creation
//$data['name'] = $firstname.' '.$lastname; // add first- and lastname
$data['name'] = $firstname.$lastname; // add first- and lastname

$data['username'] = $username; // add username
$data['email'] = $email; // add email
//there's no gid field in #__users table from Joomla_1.7/2.5

$usertype = 'Registered';//this is not necessary!!!
jimport('joomla.application.component.helper');
/* this part of the snippet from here: /plugins/user/joomla/joomla.php*/
$config = JComponentHelper::getParams('com_users');
    // Default to Registered.
$defaultUserGroup = $config->get('new_usertype', 2);
//default to defaultUserGroup i.e.,Registered
$data['groups']=array($defaultUserGroup);
$data['password'] = $password; // set the password
$data['password2'] = $password; // confirm the password
$data['sendEmail'] = 1; // should the user receive system mails?

/* Now we can decide, if the user will need an activation */

 $useractivation = $usersParams->get( 'useractivation' ); // in this example, we load the config-setting
 //echo $useractivation;exit();
 if ($useractivation == 1) { // yeah we want an activation

 jimport('joomla.user.helper'); // include libraries/user/helper.php
 $data['block'] = 1; // block the User
 $data['activation'] =JUtility::getHash( JUserHelper::genRandomPassword() ); // set activation hash (don't forget to send an activation email)

}
else { // no we need no activation

 $data['block'] = 1; // don't block the user

}

if (!$user->bind($data)) { // now bind the data to the JUser Object, if it not works....
 JError::raiseWarning('', JText::_( $user->getError())); // ...raise an Warning
    return false; // if you're in a method/function return false

}

if (!$user->save()) { // if the user is NOT saved...
 JError::raiseWarning('', JText::_( $user->getError())); // ...raise an Warning

 return false; // if you're in a method/function return false

}

return $user; // else return the new JUser object

}

$email = JRequest::getVar('email');
$password = JRequest::getVar('password');

//echo 'User registration...'.'<br/>';
if(!register_user($email, $password))
{
$data['status']="failure";
echo json_encode($data);
}
else
{
$data['status']="success";
echo json_encode($data);
}
 //echo '<br/>'.'User registration is completed'.'<br/>';
?>

P.S.请查看#_users(用户详细信息)、#_book_user_usergroup_map(映射组id和用户id),#__usergroups表保存在注册

后受影响的组键表

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10035826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档