3

我有一个自定义的 PHP 系统。

我正在尝试使用 RSVP 和其他功能制作日历,但我注意到 Joomla 具有高级插件。我的问题是如何将自定义注册表单中的数据发送到 Joomla DB。

还有我的用户在使用我的自定义登录表单时如何访问受 Joomla 保护的页面(会话)?

有可能的?

4

2 回答 2

0

这适用于 joomla 1.6-2.5(和 prob 3.0,但未经测试)。不要认为这适用于 Joomla 1.5

因此,在您的模型文件中创建一个具有以下内容的函数:这​​使用最少数量的字段(名称,电子邮件,用户名,密码)......并且我使用电子邮件作为用户名

<?php
//create or link joomla user
JModel::addIncludePath(JPATH_BASE.'/components/com_users/models');
$params = JComponentHelper::getParams('com_users');

$forMYSQL = array();
$forMYSQL['id']     = '';
$forMYSQL['name']       = JRequest::getVar('fname').JRequest::getVar('name');
$forMYSQL['username']   = JRequest::getVar('email');
$forMYSQL['email']      = JRequest::getVar('email');
$forMYSQL['groups'][0]  = 2;    //Registered user group, 
//$forMYSQL['groups'][1]    = 8;    //Super Admin user group
$forMYSQL['password']   = JUserHelper::genRandomPassword(); //Random password.
$forMYSQL['password2']  = $forMYSQL['password'];

//If a email is found....
$query = sprintf("SELECT * FROM `#__users` WHERE `email`='%s'", $forMYSQL['email']);
$this->_db->setQuery($query);
$checkuser = $this->_db->loadObject();
if ($checkuser->id > 0) {
    //E-mail in use already NOT CREATING....
} else {
    //EMAIL NOT USED... CREATING Joomla user
    $userModel =& $this->getInstance('User', 'UsersModel');
    $userModel->save($forMYSQL);

    $newuid = $userModel->getState('user.id');
    if ($newuid > 0) {
        //User created.


    } else {
        //ERROR USER NOT CREATED.
    }
}
?>

因此,如果您在 joomla 内部 .. 理想情况下在组件的模型文件内部 ... 否则您可以加载 joomla 框架,然后通过加载下一个代码片段来运行该代码:

// START: Initialize Joomla framework
define( '_JEXEC', 1 );
define( 'DS', DIRECTORY_SEPARATOR );
define('JPATH_BASE', dirname(__FILE__));    //This needs to point to the root of your joomla
// Including Required Files
require_once ( JPATH_BASE.DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE.DS.'includes'.DS.'framework.php' );
// Create the Application
$mainframe =& JFactory::getApplication('administrator');
$mainframe->initialise();
$user =& JFactory::getUser();
define( '_JEXEC', 1 );
//Including Required Joomla libarys
jimport('joomla.application.component.model');
jimport('joomla.application.component.modelitem');
jimport('joomla.application.component.modellist');
// END: Initialize Joomla framework
于 2013-05-17T19:06:44.720 回答
0

这一切都是可能的。

听起来您想采用现有的登录表单并将其转换为自定义的 Joomla 登录模块。这是 Joomla 关于如何创建自定义模块的文档的链接。

http://docs.joomla.org/How_do_you_create_a_custom_module%3F

这是另一个关于修改 Joomla 登录模块的内容。

http://docs.joomla.org/Customising_the_Login_Form_module

我没有快速的方法来教你如何做到这一点,但我会从学习 Joomla 模块结构开始并拆分(备份)现有的 Joomla mod_login(登录模块),这样你就可以了解它是如何工作的。

然后它只是将您的自定义 PHP 登录页面混入其中的任务。

没有切割和干燥,但绝对有可能。

一个快速的谷歌搜索产生了许多结果,人们试图修改自定义 Joomla 登录过程。我建议您加入 Joomla 板并开始尽可能多地阅读它。

于 2012-11-09T21:36:07.147 回答