Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Joomla组件开发(版本3.3.3)_Php_Joomla_Joomla Component - Fatal编程技术网

Php Joomla组件开发(版本3.3.3)

Php Joomla组件开发(版本3.3.3),php,joomla,joomla-component,Php,Joomla,Joomla Component,我在joomla中构建了一个组件,仅当该组件是调用代理时,我才希望从中呈现信息 例如: 我有一个网址 我希望在其中有一个pop/overlay来呈现url: 我知道必须有一种方法,只让“mykey”视图在从自身调用时呈现,而不允许直接访问。我研究了登录模块并使用JHtml::(('form.token')。不确定这是否是实现这一目标的“最佳实践”方法,或者这是否可行 非常感谢您的帮助 JoOMLA版本:3.3.3< P>使用SSL、用户会话的登录验证和验证会话的每个请求,我将考虑一个最佳实践

我在joomla中构建了一个组件,仅当该组件是调用代理时,我才希望从中呈现信息

例如: 我有一个网址 我希望在其中有一个pop/overlay来呈现url:

我知道必须有一种方法,只让“mykey”视图在从自身调用时呈现,而不允许直接访问。我研究了登录模块并使用JHtml::(('form.token')。不确定这是否是实现这一目标的“最佳实践”方法,或者这是否可行

非常感谢您的帮助


JoOMLA版本:3.3.3

< P>使用SSL、用户会话的登录验证和验证会话的每个请求,我将考虑一个最佳实践。Joomla提供了一种显示表单令牌字段的机制:

 echo JHtml::_('form.token');
如果需要将令牌附加到URL。当想要呈现HTML片段时,tmpl=componen参数很重要。这标志着Joomla仅呈现组件视图,否则您将获得整个网站;菜单、模块和所有背面:

 echo JRoute::(JUri::root() . '?option=com_mycomponent&view=userscreen&tmpl=component&' . JUtility::getToken() . '=1');
在请求服务器端的另一端,以上述路径为例,可以通过控制器接收:

class MineControllerUserScreen extends JControllerLegacy
{
    public function display($cachable = false, $urlparams = array())
    {
        // Validate the session is valid, die if isn't
        JRequest::checkToken() or die( JText::_( 'Invalid Token' ) );

        // Load the current user object for the active session if needed
        $user = JFactory::getUser();

        // Load the Session object for further validation if needed
        $session = JFactory::getSession();

        // Load sanitized items from POST and GET
        $jinput = JFactory::getApplication()->input;
        $answer = $jinput->get('user_answer', null, 'string');

        // You are satisfied this person is allowed to get this
        parent::display($cachable, $urlparams);
    }
}
这个用例应该在控制器中处理。上面的示例列出了从Joomla获取安全数据的许多可能选项,您可以使用这些选项;但对于您的情况,我认为将您现有的问题/答案合并为POST变量请求(通过令牌和用户验证)应该可以做到这一点

下面是关于安全编码准则的Joomla通用文档


为了澄清,您想确保用户不能直接在浏览器中键入覆盖/弹出窗口的URL来访问视图?是的,这是正确的。因为我已经发布了这篇文章,我已经实现了一个检查用户状态变量的版本,我仍然不确定这是否是最佳实践。我不能使用acl bc,它不是基于用户分组,而是基于用户是否输入了前一个问题的正确答案。