0

すでに大幅に変更された joomla 環境を変更しようとしています。私は Joomla 開発者ではないので、いわば荒野で少し迷っています。

基本的にサイトの99%はアクセスレベル=登録済みの記事で構成されています。これらの記事のいずれかの URL にアクセスすると、Joomla は認証ページにリダイレクトします。これは理にかなっていますが、元の記事への URL が失われることを除けば、ログイン後に、本来意図されていた記事ではなく、ホームページにリダイレクトされます。

ここで、403 エラーをインターセプトするコードで error.php ページが変更されていることがわかります。これは機能するはずです。しかし、どういうわけか/どこかで Joomla が別の方法で認証ページにリダイレクトしており、403 がスローされることはありません。

私の質問は、Joomla が認証ページ (カスタム プラグイン btw) へのリダイレクトをどのように実行するか、そして、Joomla が代わりに 403 エラーをスローして、error.php で既にコーディングされているロジックを使用できるようにする方法があるかどうかです。

前もって感謝します

PSそれはJoomla 1.5.23およびPHP 5.2.17です

4

2 に答える 2

1

ジュムラ!1.5 はかなり包括的な.htaccessファイルを使用しており、Joelが言ったように、これは Joomla の前に発生します! 中をのぞく。

標準のJoomla! com_content1.5 のインストールでは、関連するコンポーネントが (記事の標準のように) 正しく記述されている場合、ユーザーがログインした後に正しいコンテンツにリダイレクトされます。何らかの理由で認証チェックが変更されたなど、機能しない理由を調べることから始めます。

ジュムラ!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

403 エラーは HTTP レベルにあります。ユーザーがアクセス権のないサーバーの一部にアクセスしようとするとスローされます。これらのアクセス許可は、Joomla のアクセス許可とはまったく異なります。ほとんどの場合、403 エラーは.htaccessファイルの制限から、またはスクリプトがサーバーに 403 エラーをスローするように指示した場合にのみ発生します (以下のコードを参照)。

私は Joomla の専門家ではありませんが、ユーザーが認証ページにアクセスしたときに 403 エラーをスローできるはずです。この PHP コードは、トリックを行う必要があります。

header("HTTP/1.0 403 Forbidden");

これがお役に立てば幸いです。

于 2012-05-16T16:56:23.383 に答える