web-dev-qa-db-fra.com

Comment afficher le contenu pour les utilisateurs connectés par rapport aux utilisateurs déconnectés?

Nous avons un ensemble de pages avec les URL suivantes:

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

Chacun a une structure comme suit:

----------------------
|          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 

Notre solution actuelle consiste à tout gérer, non comme des fichiers html, mais comme des entrées dans une table de base de données et de générer la page html en fonction de l'URL recherchée ...

Par exemple, une règle mod_rewrite envoie:

www.mysite/info/page1.html

à

showpages.php?url=page1

et qui récupère le code HTML pour C de la table de base de données et affiche correctement la page.

Je veux rompre avec ce modèle car il est TRÈS lent à chercher de grandes pages ("C").

Mes problèmes sont doubles:

  1. Les pages ci-dessus doivent être présentées à un utilisateur "connecté", auquel cas l'en-tête ("A") est créé de manière dynamique.
  2. Avec une vue sur la maintenabilité, je ne veux pas plusieurs copies du même code (que ce soit html ou php).

Si j'utilise simplement html/js avec iframes, je ne devrais pas avoir de problème pour afficher les pages 1 à 4. Cependant, je ne sais pas comment gérer le scénario lorsque l'utilisateur est connecté.


Pouvez-vous fournir plus d'informations pour nous aider à comprendre le problème? Utilisez-vous un système de gestion de contenu?

non c'est un site web php personnalisé

Utilisez-vous des cadres?

en fait, nous n'utilisons pas les iframes dans notre configuration actuelle, mais je ne suis pas opposé à le faire si cela a du sens dans la solution idéale

Comment faites-vous la connexion maintenant?

nous avons le formulaire de connexion sur la "section d'en-tête" (A) et lorsque l'utilisateur est connecté, il personnalise l'en-tête.

Pourquoi votre méthode actuelle est-elle plus lente que les autres méthodes, si le contenu est identique?

Notre système actuel prend le contenu "C" d'un tableau. Le contenu étant plutôt volumineux, le chargement de la page est ralenti. J'essaie de déplacer le contenu HTML de la base de données vers un fichier réel sur le disque. Si je venais de faire face à des utilisateurs déconnectés/anonymes, j'aurais utilisé des iframes pour afficher (A), (B), (C) et (D). Et avec javascript, naviguez vers une autre page et modifiez le contenu de (C).

Un fait supplémentaire: j'ai actuellement un script php, userheader.php, qui génère le code HTML pour les utilisateurs connectés et déconnectés (c'est-à-dire "A").

5
siliconpi

J'utilise souvent include ()/require () pour les différents domaines, de sorte que vous pourriez avoir ...

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

Dans "A" ci-dessus. Ensuite, la logique d'affichage/masquage du contenu en fonction des autorisations ou d'une variable de session (définie après la connexion) peut afficher/masquer divers contenus.

Quelque chose comme...

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

Je ne sais pas si cela couvre ce que vous recherchez. De cette façon, vous comparez une session à une base de données ou vous frappez une fois la base de données et définissez des vars locaux filtrés dans les fichiers inclus pour évaluation.

1
digit1001