Skip to content

Instantly share code, notes, and snippets.

@smokingcat
Last active April 6, 2016 15:12
Show Gist options
  • Save smokingcat/8e30a8c02ea26b0395aa12b36cd38fe7 to your computer and use it in GitHub Desktop.
Save smokingcat/8e30a8c02ea26b0395aa12b36cd38fe7 to your computer and use it in GitHub Desktop.

Consignes générales

  • 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

Partie obligatoire

Partie utilisateur

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

Partie montage

screen shot 2016-01-27 at 12 49 08 pm

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

Partie galerie

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

Rendu et peer-évaluation

Fichiers obligatoires

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

Consignes éliminatoires

  • 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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment