我正在开发一个Joomla 1.0模块的帮助脚本。我用它来执行AJAX任务(读取和写入数据库,返回JSON),所以我需要阻止Joomla输出它的标题等等。
到目前为止,我已经解决了这个问题,他们将一些代码混合在一起,以便进行必要的包含以建立数据库连接等:
define( '_VALID_MOS', 1 );
require_once '../globals.php';
require_once '../configuration.php';
require_once '../includes/joomla.php';
唯一的问题是没有创建$my
变量(当前用户的mos_user
对象)。
如何创建此用户?我需要包含哪些文件?
答案 0 :(得分:0)
我发现它是$mainframe
对象上的一个函数,但你必须构造它:
$mainframe = new mosMainFrame( $database, '', '.' );
$mainframe->initSession();
$my = $mainframe->getUser();
答案 1 :(得分:0)
你也可以调用index2.php?no_html = 1(后跟你需要的任何其他参数)来获得标准组件的原始输出。
答案 2 :(得分:0)
我在将1.5模块迁移到1.0时遇到了这个问题,但上述答案似乎都没有给出完整的故事。 nickf的答案让我大部分都在那里,但是我在试图构建大型机时陷入了一个兔子洞。
然后我假设可能已经创建了$ my,虽然它在一个函数中不起作用(我是PHP新手所以我认为它可以访问)我发现在模块范围内使用它很好,如下图所示:
<?php
/**
* Demo package
*
* @package Demo package
* @subpackage Modules
*/
// no direct access
defined( '_VALID_MOS' ) or die( 'Restricted access' );
class modDcsgSimulatorHelper
{
/**
* security by obscurity
*/
function getAppToken( $username )
{
return urlencode($username);
}
}
$apptoken = modDcsgSimulatorHelper::getAppToken( $my->username );
?>
Run the <A href="http://somesecurewebsite.com?apptoken=<?php echo $apptoken; ?>">A Secure Link</A>.
在任何人为了这个非常安全的机制而惹恼我之前,请放心,我已经从实际实施中删除了细节,因为我的回答是不必要的冗长。