Bienvenue sur le site de gestion des stages.
Choisissez un lien ci-dessus en fonction de votre statut.
Accueil
Intro partie 5
Voici la partie 5 du Mini-Projet de Bases de Données
"Développer une interface client-serveur permettant l'accès et
l'exploitation de votre système à partir d'un client WEB"
Nous avons choisis de créer l'interface en PHP plutôt qu'en java car
même si la sécurisation en java semble plus facile en théorie,
elle est en réalité tout aussi compliquée, et de plus, le Java est un
langage sur machine virtuel ce qui consomme beaucoup de ressources et
de nombreux risques de plantages supplémentaires.
Le PHP, est un langage libre permettant de générer du code HTML, Lisible
par toute personne disposant d'un ordinateur avec un navigateur WEB
(ex:Mozilla, FireFox, Opera, Iexplore, Netscape, Lynx).
Par soucis de portabilité du système, nous n'avons utilisé que des
fonctions standard et compatibles à tous les niveaux.
La structure choisie est une structure en un seul fichier utilisateur,
c'est à dire que l'utilisateur se trouve toujours sur la page
'index.php'. L'inconvénient est une difficulté de référencement mais
ceci ne nous concerne pas étant donné que l'accès est sécurisé par mot
de passe on ne référence pas le contenu.
Du côté code PHP, par contre, on dispose d'une arborescence de fichiers
qui peut servir pour la généricité du code lors de pages semblables.
Interface SQL/PHP compatible
Ce site est prévu pour fonctionner sur un serveur PHP interfacé
avec ORACLE ou MySQL. Pour changer de configuration, il suffit de changer
une ou deux constantes.
Dans secret/fonctions.php la constante $mode définie les fonctions
d'interface à utiliser entre :
0 : MySQL pour PHP 3.0 et + (partout)
1 : ORACLE pour PHP 3.0 à 4.0 (ESEO en 2005) <- pas encore au
point car pas le temps de rester à l'école pour tester
2 : ORACLE pour PHP 4.1 et + (partout)
Dans secret/suppressions.php sont définies des fonctions différentes en
fonction de $relation :
0 : Base de donnée Relationnelle (ex: ORACLE, MySQL(InnoDB)
4.0+, MySQL 5.0+)
1 : Base de donnée Non-Relationnelle (ex: MySQL(ISAM/MyISAM) <5.0)
Grâce à ces 2 constantes, Le système est entièrement compatible entre ORACLE et MySQL.
Sécurite
Un Problème important sur internet est souvent la sécurité. Il existe un
très grand nombre de site sur internet, qui contiennent des failles.
Si on ne programme pas rigoureusement ou sans connaître les failles, on
s'expose au crakeurs.
Ce site est protégé par un des meilleurs moyens possibles.
Par contre les éventuelles failles laissées sur certaines pages du même
nom de domaine permettraient aisément de le pirater. Il est donc
important de séparer les sites (en droit d'accès) sur un même domaine
pour limiter les possibilités de piratage.
Une des façon de pirater un site est "l'injection SQL" qui consiste via
un formulaire d'envoyer des instructions qui vont s'exécuter lors d'une
de nos requête, il suffit d'une variable non sécurisé et on peut
prendre possession du site (ou tout simplement entrer sans login
ni mot de passe).
Ce site utilise les sessions de façon à conserver des variables critiques
côté serveur, celles-ci sont donc en grande sécurité. Les
Mots de passes sont hachés en MD5, ce qui rend impossible de les retrouver.
Si on voulait aller plus loin on pourrait le hacher via du javascript
avant sa transmission pour éviter qu'il ne circule en clair sur le
réseau lors de l'identification. (dans ce cas on garderait
md5(md5(password)) dans la base de données (car il est important
d'effectuer un hachage entre ce qui est reçu par la page et ce qui
est contenu dans la base de données.
Normes
Pour poursuivre avec les sujets qui fâchent, il y a les normes...
Beaucoup de gens l'ignorent, d'autres font semblant de ne pas être au
courant... Certains disent "Mon site est 100% compatible Internet
Explorer"... Mais en fin de compte, tres peu de personnes respectent
les normes du WEB.
Ceci est en grande partie dû à Microsoft qui équipe la plupart des
PC avec son système d'exploitation qui intègre un navigateur ne
respectant pas les normes.
Nous avons, lors du développement de ce site, perdu 2 heures à refaire
une partie qui ne fonctionnait pas sous Iexplore. Heureusement que nous
avons détecte ce problème assez vite (et trouvé une solution) sinon on
aurait pu perdre beaucoup plus de temps.
Comme l'indique la DTD en haut des sources de la page, Ce site est en
XHTML transitionnel.
Il est possible qu'actuellement il ne passe pas à 100% car n'ayant pas
internet, nous n'avons pas eu le temps de le valider, cependant, les
erreurs s'il y en a sont sans aucun doute uniquement typographique,
et en aucun cas portées sur la structure du site (pour vérifier, il
suffit d'aller sur le site de W3C.
Nous signalons aussi qu'une norme concerne le
css. (nous n'avons pas
encore vérifié la css de ce site).
Conclusion partie 5
Ce qui est dommage :
- Ce Projet qui n'est pas encore terminé, mais c'est finalement très
logique, étant donné qu'on ne nous fournit ni cours ni temps pour le
réaliser alors que son ampleur est à l'égale des autres mini-projets
(qui ont 20h et un coef de 2,6 au lieu des 1,5 de l'ensemble de celui-ci.)
- Le temps perdu à l'école avant de comprendre que la vieille version
de PHP qui y est installée est très différente de celles qu'on trouve
partout depuis déjà 2-3ans.
- la quasi impossibilité d'installer Oracle chez soi. En effet, ce
système est prévu pour un usage 'industriel' de bases de données et
son installation chez un particulier est très contraignante.
Ce qui est bien :
- bientôt tout sera plus simple quand PHP 5.0 et MySQL 5.0 seront
complètement fonctionnels et débugués. d'ici environ 3 ans.
- Ce projet nous a permis d'apprendre par la recherche, ce qui nous est
rarement proposé et sera pourtant notre futur mode d'apprentissage
lorsque nous serons dans la vie active. (je rappelle cependant qu'une
présentation sommaire présentée pas la JE et le LCI a permis à 1/4 de
la promotion de connaître les bases qui leurs manquait pour qu'ils ne
soient pas notés sur 15, car vu la façon dont on voit les chose au
niveau élèves, on est vite tenté de ne pas faire la partie 5.)