【发布时间】:2014-01-24 08:38:20
【问题描述】:
我正在使用旧的 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 应用程序,问题就消失了。
有人知道为什么会发生这种情况吗?
提前致谢。
【问题讨论】: