Bizarre ça ne fait pas ça depuis mon poste (même en vidant tout et en redémarrant le navigateur"... Ca m'affiche ls CSS mais avec toutes les valeurs à 0px, logique...Si j'ouvre directement la page "http://lycee.prod.free.fr/templates/01_ ... ozilla.php" cela me retourne un message d'erreur...
Si je m'arrête sur "http://lycee.prod.free.fr/templates/01_eleves/origine/" et que je clique sur le fichier style_mozilla.php, cela me propose de télécharger un fichier vide...
Ce fichier "http://lycee.prod.free.fr/templates/01_ ... ozilla.php" fonctionne avec des variables mises en session. Pour qu'il s'affiche correctement, il faut donc nécessairement passer par les "passages prévus", à savoir la page de connexion.
J'explique le cheminement:
1)
http://lycee.prod.free.fr : pointe sur "index.html": on arrive sur une page sur laquelle on trouve un lien "Entrer", ce lien ouvre une fenêtre en "fullscreen". Le CSS est contenu directement dans le code de la page.
2)
En cliquant sur ce lien, on ouvre la page de connexion "index.php", dans laquelle apparait le formulaire de connexion.
On inclut tout d'abord une page appellée "headers.php" dans laquelle on trouve les balises META et la détection du navigateur, qu'on met en session
$_SESSION['navigateur']
On appelle ensuite un script JS:
<script type="text/javascript" src="includes/ecran.js"></script> qui détermine les dimensions utilisables de l'écran. Ces variables sont écrites dans des champs cachés du formulaire de la page.Cette page est liée à une page CSS :
<link rel="stylesheet" type="text/css" media="screen" href="templates/00_index/origine/style_<?=$_SESSION['navigateur']?>.css" /> différente selon le navigateur utilisé.Ensuite la page est construite, avec un petit appel à la BDD pour connaitre la liste des établissements inscrits.
Le bouton "submit" du formulaire appelle la page "connexion.php".
3) connexion.php
Les variables postées sont mises en session (avec MD5() pour le mot de passe).
Plusieurs tests sont effectués: on vérifie que les champs ne contiennent pas de caractères interdits (pouvant servir à de l'injection SQL par exemple), le jeu interdit est (PCRE) #[A-Z\W]# pour le login et #[\W]# pour le mot de passe. Les autres champs ne sont pas testés, ça pourra être implémenté plus tard. Si caractère non autorisé-->envoi sur une page d'erreur qui autorise un certain nombre de tentatives.
Ensuite on cherche le login et le mdp dans la table des utilisateurs. Si le résultat renvoyé=0 (pas trouvé d'utilisateur avec ce login/mdp), on renvoie sur une page de re-tentative (en nombre limité à 3). Si le résultat >1 alors y'a erreur critique (plusieurs utilisateurs avec même login et même mot de passe). Si on ne trouve pas la catégorie de l'utilisateur (BDD mal renseignée), on pointe sur une page d'erreur.
Si tout est correct, on récupère toutes les infos de l'utilisateur qu'on met en session. Selon sa catégorie (élève ou enseignant) on pointe sur des pages différentes. Pour l'instant seule la catégorie élèves est en préparation.
On arrive donc sur la page "01-eleves/menu.php"
4) menu.php
Là ça se complique. Tout d'abord le principe de navigation par onglets: les données nécéssaires au bon affichage sont postées par URL, mais comme je suis un poil parano (j'ai affaire à des élèves plus malins que moi en Internet) j'ai crypté les liens. De toutes façons vu qu'on est censé naviguer en plein écran, l'URL n'apparait pas mais bon...
Donc à chaque clic sur un onglet on appelle quelque chose du genre "menu.php?rvnrf6àf" Je ne m'étends pas plus là dessus, mais si ça vous intéresse je peux détailler.
En début de page HTML on réinclut la page "headers.php" contenant les balises META.
On appelle un script JS qui affiche la date et l'heure en dynamique dans un champ d'un formulaire, en haut à gauche de l'écran.
On renseigne les autres données (identification).
On appelle cette feuille "CSS" en php:
<link rel="stylesheet" type="text/css" media="screen" href="../templates/01_eleves/origine/style_<?=$_SESSION['navigateur']?>.php" /> et cette feuille a besoin des dimensions de l'écran mises en session plus tôt, donc normal que ça foire si on pointe directement dessus. Cette page sert uniquement à la mise en page "principale", c'est à dire toute la partie supérieure (heure, identification, déconnexion, onglets de navigation, corps de la page et timer tout en bas).La mise en page du contenu du corps est appellée dans le fichier "CSS", suivant l'onglet dans lequel on se trouve de cette façon:
<?
switch($_SESSION['page_active']){
case "modifier_profil_eleve":include("style_modifier_profil_eleve_mozilla.php");break;
default:echo 'erreur';break;
}
?> Pour l'instant le seul onglet que j'ai réellement travaillé est le profil élève.Cette page "menu.php" suivant l'onglet dans lequel on se trouve, va inclure (en corps de page) la page correspondant à l'onglet sélectionné.
Donc par exemple pour le profil on fait:
include($lien); //avec $lien="7_profil/71_modifier/modifier1.php";
5)"7_profil/71_modifier/modifier1.php"Contient le code php/html nécessaire à l'affichage du formulaire de modification du profil.
Bon je sais c'est tordu comme principe, mais je ne voyais pas comment faire autrement...
Vous y voyez un peu plus clair? (j'espère!)