我正在使用旧的1.5.26 Joomla安装。我为网站开发了一个Web应用程序,用joomla包装器嵌入它,并决定使用joomla用户管理进行访问(在这里插入一个头撞到墙上的声音)。
我使用了一个简单的代码:
<?php
define( '_JEXEC', 1 );
define('JPATH_BASE', dirname((dirname(__FILE__))));
define( 'DS', DIRECTORY_SEPARATOR );
require_once (JPATH_BASE . DS . 'includes' . DS . 'defines.php');
require_once (JPATH_BASE . DS . 'includes' . DS . 'framework.php');
$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();
$usuario= JFactory::getUser();
$idUsuario=$usuario->id;
$nombreUsuario=$usuario->name;
if ($idUsuario==0)
{
echo "<p>Error: no tiene permiso</p>";
die ();
}
else
{
echo "<p>Hola, $nombreUsuario.</p>";
}
/* And the script goes on... */
事情是,一切都很完美。我在几台带有几个网络浏览器的计算机上测试过它(即使是iPad),它似乎工作正常。我很高兴......直到我开始制作并允许真实用户访问它。
全面而彻底的灾难。许多用户(很多用户)都收到“错误”消息,jFactory :: getUser为他们返回0。我使用他们的用户名和密码来尝试它,它工作正常。他们尝试从他们的结束而不是。
只有当我将脚本嵌入到包装器中时才会发生这种情况。如果我让用户通过指向应用程序目录的直接链接访问Web应用程序,问题就会消失。
有没有人对这可能发生的原因有任何想法?
提前致谢。
答案 0 :(得分:0)
您的问题与此问题How to pass Joomla parameters to an iframe (wrapper) page?中的问题相同,答案建议将其包含在您的脚本中:
<?php
define('_JEXEC', 1 );
define('JPATH_BASE', $_SERVER['DOCUMENT_ROOT'] );
define( 'DS','/' );
require_once ( JPATH_BASE.DS. 'includes'.DS.'defines.php' );
require_once ( JPATH_BASE.DS.'includes'.DS.'framework.php' );
require(JPATH_BASE.DS.'libraries/joomla/factory.php');
$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();
?>
以及此代码(与您的代码几乎相同):Getting user information within wrapper
答案 1 :(得分:0)
define( '_JEXEC', 1 );
define( 'JPATH_BASE', realpath(dirname(__FILE__).'/../' ));
require_once ( JPATH_BASE .'/includes/defines.php' );
require_once ( JPATH_BASE .'/includes/framework.php' );
$mainframe = JFactory::getApplication('site');
$user = & JFactory::getUser();
这对我来说无处不在。请注意/../ 如果您在iframe中放入的文件具有更深层次,则可以添加更多/../&#39; s