- utiliser PHP
- Seules les extensions instalées sur PHP (GD et les drivers SGBD, entre autres), ainsi que les API javascript natives de vos navigateurs sont autorisées
- utiliser l’interface d’abstraction PDO
- définir le mode d’erreur 2 sur PDO::ERRMODE_EXCEPTION.
- utiliser le serveur web de votre choix ( Apache, Nginx, built-in )
- au minimum compatible sur Firefox (>= 41) et Chrome (>= 46).
- une mise en page décente
- header
- une section principale
- un footer
- responsive
- l’ensemble de votre site devra être sécurisé
- Tous vos formulaires doivent avoir des validations correctes
- passwords hashés
- ne pas pouvoir injecter du code HTML ou JavaScript “utilisateur” dans des variables mal protégées.
- ne pas pouvoir uploader du contenu indésirable
- ne pas pouvoir modifier une requête SQL
- L’application doit permettre à un utilisateur de s’inscrire, en demandant au mini- mum une adresse email, un nom d’utilisateur et un mot de passe un tant soit peu sécurisé. La fin de l’inscription doit être complétée avec un mail de confirmation.
- L’utilisateur doit ensuite être capable de se connecter avec son nom d’utilisateur et son mot de passe. Il doit également pouvoir recevoir un mail de réinitialisation de son mot de passe en cas d’oubli.
- L’utilisateur doit pouvoir se déconnecter en un seul clic depuis n’importe quelle page du site.
- Cette partie ne doit être accessible qu’aux utilisateurs connectés, et rejeter poliment l’internaute 1 dans le cas contraire.
- Cette page devra etre composée de deux sections :
- Une section principale, contenant l’apercu de votre webcam, la liste des images superposables disponibles et un bouton permettant de prendre la photo.
- Une section latérale, affichant les miniatures de toutes les photos prises précedem- ment. Votre mise en page doit donc normalement ressembler à la Figure IV.1.
- Les images superposables doivent être sélectionnables, et le bouton permettant de prendre la photo ne doit pas être cliquable tant qu’aucune image n’est sélectionnée.
- Le traitement de l’image finale (donc entre autres la superposition des deux images) doit être fait coté serveur, en PHP.
- Parce que tout le monde n’a pas de webcam, vous devez laisser la possibilité d’uploader une image au lieu de la prendre depuis la caméra.
- L’utilisateur doit pouvoir supprimer ses montages, et uniquement les siens.
- Cette partie doit afficher l’intégralité des images prises par les membres du site, triées par date de création, et doit pouvoir permettre à l’utilisateur de les com- menter et de les liker.
- Lorsque une image reçoit un nouveau commentaire, l’auteur de cette image doit en être informé par mail.
- La liste des images doit être paginée.
- Un fichier index.php, contenant le point d’entrée de votre site, et situé à la racine de votre arborescence.
- Un fichier config/database.php, contenant la configuration de votre base de données qui sera instanciée via PDO au format suivant:
?php
$DB_DSN = ...;
$DB_USER = ...;
$DB_PASSWORD = ...;
?>
Le DSN (Data Source Name) contient les informations requises pour se connecter à la base, par exemple ’mysql:dbname=testdb;host=127.0.0.1’. En général, un DSN est constitué du nom du pilote PDO, suivi d’une syntaxe spécifique au pilote. Plus de détails sont disponibles dans la documentation PDO de chaque pilote 1.
- Un fichier config/setup.php, capable de créer ou recréer le schéma de la base de données, en utilisant les infos contenues dans le fichier config/database.php.
- Votre code ne doit produire aucune erreur, warning ou notice, coté serveur et coté client, dans la console web.
- Comme énoncé dans les consignes générales, l’utilisation d’un framework, d’un micro-framework, d’une librairy, etc... est rigoureusement interdite, et vous devez utiliser PDO.
- D’ailleurs, tout ce qui n’est pas explicitement autorisé est interdit.
- Enfin, la moindre faille de sécurité entrainera un 0. Vous devez au minimum gérer ce qui est indiqué dans les consignes générales, cad ne pas avoir de mot de passe en clair, être protégé contre les injections SQL, et avoir une validation de tous les formulaires de saisie et d’upload.