web-dev-qa-db-ja.com

ログインしたユーザーとログアウトしたユーザーのコンテンツを表示する方法は?

次のURLを含むページのセットがあります。

www.mysite.com/info/page1.html
www.mysite.com/info/page2.html
www.mysite.com/info/page3.html

それぞれの構造は次のとおりです。

----------------------
|          A         |
|--------------------|
|  |                 |
|B |        C        |
|  |                 |
----------------------
|          D         |
|--------------------|

A: is the "header" area
B: is a list of menu items which show a bunch of menus, sub-menus and the 
   currently selected sub-menu
C: is the content, shown depending on what is selected on B
D: is a common footer to all 

現在のソリューションは、すべてをhtmlファイルとしてではなく、データベーステーブルのエントリとして管理し、求めているURLに応じてhtmlページを生成することです...

たとえば、mod_rewriteルールは次を送信します。

www.mysite/info/page1.html

showpages.php?url=page1

dBテーブルからCのhtmlを取得し、ページを適切に表示します。

大きなモデル( "C")のフェッチに非常に時間がかかるため、このモデルから脱却したいと思います。

私の問題は2つあります。

  1. 上記のページは、「ログインしている」ユーザーに表示する必要があります。この場合、ヘッダー(「A」)は動的に作成されます。
  2. 保守性の観点から、同じコードの複数のコピー(htmlやphpが浮かんでいるかどうか)は望ましくありません。

Iframeと共に純粋なhtml/jsを使用するだけであれば、1〜4ページの表示に問題はないはずです。しかし、ユーザーがログインしているときにシナリオを管理する方法がわかりません。


問題の理解に役立つ情報を提供できますか?コンテンツ管理システムを使用していますか?

いいえ、カスタムphpウェブサイト

フレームを使用していますか?

実際、現在のセットアップではiframeを使用していませんが、理想的なソリューションで意味がある場合は、iframeを使用することは避けません。

今、どのようにログインしますか?

「ヘッダーセクション」(A)にログインフォームがあり、ユーザーがログインすると、ヘッダーがカスタマイズされます。

コンテンツが同じ場合、現在のメソッドが他のメソッドよりも遅いのはなぜですか?

現在のシステムは、テーブルからコンテンツ「C」を取得します。コンテンツはかなり大きいため、ページの読み込みが遅くなります。 HTMLコンテンツをデータベースからディスク上の実際のファイルに移動しようとしています。ログアウト/匿名ユーザーを処理する必要がある場合、iframeを使用して(A)、(B)、(C)、および(D)を表示します。 JavaScriptを使用して、別のページに移動し、(C)の内容を変更します。

もう1つの事実-現在、ログインユーザーとログアウトユーザーの両方(つまり「A」)のhtmlを生成するphpスクリプトuserheader.phpがあります。

5
siliconpi

私はよくさまざまな領域にinclude()/ require()を使用しているため、...

include($_SERVER['DOCUMENT_ROOT']."/includes/header.php");

上記の「A」。次に、アクセス許可またはセッション変数(ログイン後に設定)に基づいてコンテンツを表示/非表示にするロジックは、さまざまなコンテンツを表示/非表示にすることができます。

何かのようなもの...

If(isset($_SESSION['logged_in'])){ ?>
    <!-- html here to show when logged in --><?php
} ?>
<!-- html that's shown either way -->

それがあなたが探しているものをカバーしているかどうかはわかりません。この方法では、セッションとdbのヒットをチェックするか、dbを1回ヒットして、評価のために含まれるファイルにフィルターダウンするいくつかのローカル変数を設定します。

1
digit1001