0

我正在尝试修改已经大量修改的 joomla 环境。我不是 Joomla 开发人员,所以可以这么说,我有点迷失在荒野中。

基本上,99% 的网站都包含访问级别 = 已注册的文章。当您点击其中一篇文章的 URL 时,Joomla 会重定向到授权页面。这是有道理的,除了原始文章的 URL 丢失,因此登录后,您将被重定向回主页,而不是原来的文章。

现在,我可以看到 error.php 页面已经修改了代码以拦截 403 错误,这看起来应该可以工作。但是,不知何故/某处 Joomla 以其他方式重定向到身份验证页面,并且没有抛出 403。

所以我的问题是,Joomla 如何执行对身份验证页面的重定向(顺便说一句,自定义插件),Joomla 有什么方法可以改为抛出 403 错误,以便我可以使用已经在 error.php 中编码的逻辑。

提前致谢

ps 它是 Joomla 1.5.23 和 PHP 5.2.17

4

2 回答 2

1

Joomla!1.5 使用了一个相当全面的.htaccess文件,正如Joel所说,这发生在 Joomla 之前!进去看看。

标准的 Joomla!如果相关组件编写正确(如文章的标准),1.5 安装将在用户登录后重定向到正确的内容com_content。我会先看看为什么这不起作用,例如是否出于某种原因修改了身份验证检查。

Joomla!1.5 通常通过将return参数(base64 编码)附加到用于调用的 URL 来执行此操作com_user,您可以在大多数组件中找到这样的代码来检查用户是否可以访问,如果没有则重定向它们。

if (($contact->access > $user->get('aid', 0)) || ($contact->category_access > $user->get('aid', 0))) {
    $uri        = JFactory::getURI();
    $return     = $uri->toString();

    $url  = 'index.php?option=com_user&view=login';
    $url .= '&return='.base64_encode($return);

    $mainframe->redirect($url, JText::_('You must login first') );
}
于 2012-05-16T22:58:39.523 回答
0

HTTP 级别出现403 错误。当用户试图访问他无权访问的服务器的一部分时,就会抛出它。这些权限与 Joomla 权限完全不同。大多数情况下,403 错误仅来自.htaccess文件中的限制,或者当脚本告诉服务器抛出 403 错误时(参见下面的代码)。

我不是 Joomla 专家,但是当用户进入身份验证页面时,您应该能够抛出 403 错误。这个 PHP 代码应该可以解决问题:

header("HTTP/1.0 403 Forbidden");

希望这对您有所帮助。

于 2012-05-16T16:56:23.383 回答