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