\section{Page}

Il s'agit de l'objet qui gère tous les composants de la page (en-têtes, scripts, contenu,pied-de-page) et qui gère l'autentification et qui unifie l'apparence des pages.

\lstset{language=PHP}
\begin{lstlisting}
class Page{
function logCheck($authorizedLevel=0);
function setTitle($title);
function startHeader();
function endHeader(){;
function startScript();
function endScript();
function startContent();
function endContent();
function toHTML();
}
\end{lstlisting}

\subsection{Le constructeur}
\par Le construteur de cette classe à plusieurs rôles:
\begin{itemize}
\item{ il initialise les variables}
\item{ il lance une session. En effet, chaque personne qui se connecte sur le site a une session différente.}
\item{ il vérifie si le login est correct. }
\end{itemize}

\subsection{Les vérifications des droits d'accès}
\par Il est nécessaire, sur chaque page, de vérifier l'identité de l'utilisateur, et
si nécessaire de le forcer a s'identifier correctement.
\par Pour ce faire, il faut appeller la méthode \verb+logCheck($authorizedlevel)+, où \verb+$authorizedlevel+ est le masque qui sera appliqué (fonction AND) bit-à-bit aux droits de l'utilisateur pour valider ou non l'accès à la page. 

\par En général, pour utiliser \verb+logCheck+, il faut : 
\lstset{language=PHP}
\begin{lstlisting}
$page=new Page(__FILE__);
$_SESSION["referer"]=basename(__FILE__);
$page->logCheck();

\end{lstlisting}
afin que l'utilisateur qui n'était pas loggué revienne automatiquement sur la page courrante après s'être identifié.

\subsection{L'affichage}
\par La fonction permettant l'affichage des pages est \verb+toHTML()+
celle-ci assemble le contenu dynamique avec les fichiers suivants, afin de créer
une page de D'Astre.Net:
\begin{itemize}
\item{ \verb+header.inc.php+ :celui le chemin d'acces au 
fonction ,et insert les bibiotheque nécessaire pour le fontionnement
du site }
\item{ \verb+bodystart.inc.php+ :ce fichier comprend toutes les balises du début de script html, par exemple : <body><div>...}
\item{ \verb+footer.inc.php+ :Le pied de page.}
 \item{ \verb+bodyend.inc.php+ : celui-ci contient du code PHP et HTML gérant la fermeture de l'objet page, ajoutant un pied de page et affichant la page.}
\end{itemize}

\subsection{Les buffers}
\par Pour que l'affichage des pages puisse se faire correctement d'un seul coup dans \verb+toHTML+, il est nécessaire de mettre en tampon toutes les données émises vers la sortie standard. Cela permet (entre autres) l'ajout d'en-têtes HTML à la page alors que le contenu de la page a déja été émis...
Les buffers sont utilisés a tous les niveaux : en-têtes, scripts JavaScript, contenu principal.

Le contenu du buffer devra {\em impérativement} se trouver entre l'appel des méthodes \verb+startXXX()+ et \verb+endXXX()+.

Par exemple, pour le contenu de la page :
\lstset{language=PHP}
\begin{lstlisting}
$page->startContent();
?>

voila le code PHP-HTML qui est mis en tampon 
pour apparaitre a un endroit precis de la page
apres recomposition par toHTML.
<?php
$page->endContent();
\end{lstlisting}
