Sommaire
•	Partie I : Introduction
       1.  Introduction générale
           a.  Qu'est-ce que Scolar-help ?
           b.  Quel est son but concret ?
       2.  Description (rapide) des modules
           a.  Espace membre
           b.  News
           c.  Cours
           d.  Forum
           e.  Exercices
           f.  Quizs
        3.  Informations sur le codage
           a.  La convention
           b.  Le framework
•	Partie II : Espace membre
         1.  Introduction à l'espace membre
           2.  Description de la table sql
           3.  Lib utilisé
           4.  Inscription
           5.  Connexion 
           6.  Mot de passe oublié
           7.  Profil
           8.  Modification du profil

PARTIE I : INTRODUCTION 

Introduction générale
Qu'est-ce que Scolar-help ?
Scolar-help est un site communautaire scolaire où l'on pourra retrouver des diverses cours variés que sa soit dans différentes matières comme la français, les mathématiques, la physique-chimie, etc. Les matières seront choisis en fonction du niveau scolaire du visiteur allant de la primaire au lycée mais on peut très bien aussi s'avancer, continuer à apprendre tout sa sur un seul site. D'autres modules qui pourront distraire tout en apprennant au visiteur avec des exercices avec les solutions, des quizs. Un système de news sera créer permettant de s'informer de l'actualité scolaire.
Quel est son but concret ?
Le but de Scolar-help est de permettre :
•	Aux élèves en difficulté : de pouvoir lire des cours en ligne si ils n'ont pas compris une matière spécifique en classe, de poser des questions sur le forum, de pratiquer les notions apprises lors d'un cours grâce aux exercices et aux quizs variés. et aux quizs.
•	Aux élèves doué : de continuer ou de pouvoir approfondir une matière dans différents niveaux, d'aider les autres personnes à l'aide du forum, créer des exercices, des quizs et même bien sûr, des cours.
Description des modules
Espace membre
Espace membre sert à gérer son profil principalement, avec un interface simple à utilisée, voici les fonctionnalités avec leur description assez précise  qui seront présentes dans cet interface de l'espace membre :
•	Inscription : Une inscription simple avec les champs suivants : pseudo, mot de passe, confirmation du mot de passe, email, question secrète et réponse secrète, catcha, newsletter et cgu.
•	Connexion : une connexion avec deux champs indispensables pseudo et mot de passe, un champs facultatif "se souvenir de moi" et un lien en cas d'oublie de mot de passe. Le visiteur à le droit à 3 tentatives sinon, il devra attendre 5 minutes par mesure de sécuriter.
•	Mot de passe oublié : la fonction de mot de passe oublié ce passe en plusieurs étape : la première étape consiste à entrer son pseudo et son adresse email, la seconde étape consiste à entrer la réponse de la question qui s'affiche, le visiteur à le droit à trois tentatives, si celle-ci échoue, il faudras attendre 5 minutes par mesure de sécurité.
•	Profil : un profil affichant par défault les informations suivantes : membre n°, le pseudo, l'avatar (par défaut si non modifier), l'email (si le visiteur a donner l'autorisation via la modification de son profil), inscrit le, dernière connexion le, le rang, la matière favoris, le niveau scolaire (entre autre la classe).
•	Modification de profil : comporte deux liens : un vers modification d'identifiants et l'autre modification des informations générales
•	Modification d'identifiants : comporte trois liens : modification du pseudo, modification de l'adresse email et modification du mot de passe.
•	Modification des informations générales : comporte les champs suivants : l'âge, le niveau scolaire, la newsletter, afficher l'email dans le profil et la matière favorite.
•	Modification du pseudo : un champs simple demandant le nouveau pseudo.
•	Modification du mot de passe : quatre champs : ancien mot de passe, nouveau mot de passe, confirmation du mot de passe et réponse secrète à la question afficher.
•	Modification de l'adresse email : trois champs : nouveau email, confirmation du nouveau email et mot de passe.
•	Liste des membres : sert à voir tout les membres du site avec un système de pagnation.
News
Les news de Scolar-help servent à s'informer de l'actualité scolaire et sûrement de l'actualité politique, d'hight-tech et d'informatique, donc voici les fonctionnalités du système de news :
•	Créer une news : comporte les champs suivants : le nom de la news, l'icône, catégorie, licence et contenu.
•	Modifier une news : permet de modifier une news en édition seulement
•	Supprimer une news : permet de supprimer définitivement une news
•	Valider une news : permet de valider une news et envoyer automatiquement un mp comme quoi une news vient d'être envoyer en validation aux validateurs et newsers.
•	Renvoyer en édition une news : permet de renvoyer une news en édition quand le statut de la news est soit en validation ou en publication.
•	Voir une news : permet de voir une news en édition (que l'auteur, les admins, les validateurs et les newsers peuvent voir la news seulement si ils ont le lien)
•	Poster un commentaire : permet de commenter une news
Cours
Les cours de Scolar-help sont faits comme dis plus haut, de sois essayer de comprendre ou s'avancer dans différentes matières, voici les fonctionnalités pour le système de cours :
•	Créer un cours : comporte les champs suivants : le nom du cours, l'icône, la catégorie, la licence, l'avancement, l'introduction et la conclusion.
•	Créer une sous-partie : permet de créer une sous-partie, comporte les champs suivants : le nom de la sous-partie et le contenu.
•	Modifier le cours : peremt de modifier l'introduction et/ou la conclusion.
•	Modifier une sous-partie : permet de modifier une sous-partie.
Informations sur le codage

La convention
La convention est un technique de codage permettant de mieux si retrouver, voici une liste d'informations sur la convention de ce projet :
•	Les variables : les variables ne commencent pas par un chiffre, si il y a plusieurs mots, séparé par une majuscule par exemple cours informatique va se noter en variable $coursInformatique.
•	Les constantes : les constantes sont toujours en majuscules, et sont séparées par un _ si il y a plusieurs mots dans le nom de la constante.
•	Les tables sql : elles ont toujours comme préfixe membre_ par exemple : membre_news correspond à la table sql news.
•	Les colonnes sql dans un table : elles ont toujours le préfixe du nom de la table, reprenos l'exemple de membre_news le nom principale est news donc une colonne de cette table pour l'auteur devient news_auteur.
•	Les bonnes pratiques : pensez à espacer votre code, commenter des points difficiles et/ou complexe, au début d'une fonction, une description courte et obligatoire.
        Le framework
        Scolar-help va utilisé le framework GCsystem conçu par fab@c++, voici pourquoi prendre le GCsystem :
•	Le framework à une architecture MVC
•	Le code est mieux structuré est organisé
•	De nombreuses class sont toutes prêtes pour faciliter le codage aux développeurs
                                                                                                                               
PARTIE II : ESPACE MEMBRE
Introduction à l'espace membre
L'espace membre va être un moyen au visiteur, de gérer tout ce qui est profil, compte, etc. L'inscription permet de s'enregistrer dans la bdd, ensuite il faudra se connecter, pour entrer dans la communauté de Scolar-help. Le mot de passe a été oublié ? Pas de problème ! Un système de mot de passe oublié est prévu pour envoyer un nouveau mot de passe à l'adresse email renseigner lors de l'inscription au site, il est donc important de spécifier l'email dans les cas où l'on peut oublier le mot de passe. On peut aussi voir si son camarade est inscrit sur le site, avec la liste des membres, il faut juste le pseudo est vous pourrez le retrouver ! On peut tout modifier dans l'espace membre : pseudo, mot de passe, email, newsletter, age, matiere favorite, niveau scolaire, vous avez donc de nombreux choix de modification. 
En résumé, l'espace membre va permettre au visiteur de démarrer dans la communauté.
Description de la table sql
La table sql va permettre de stocker les données du visiteur, le pseudo, le mot de passe, etc. 
Voici la structure de la table sql, elle comporte X colonnes :
•	membre_id
•	membre_pseudo
•	membre_mdp
•	membre_email
•	membre_rang
•	membre_di
•	membre_dc
•	membre_matiere
•	membre_age
•	membre_avatar
•	membre_ip
Membre_id : correspond à l'id du membre, permettant d'effectuer des requêtes sql, il s'incrémente à chaque nouvelle entrée dans la table, il est de type int puisque c'est un nombre entier.
Membre_pseudo : correspond au pseudo du membre, permet d'identifier le membre, pour par exemple l'ajouter en amis, lui envoyer un message privé, etc. Le champs est de type VARCHAR avec une valeur de 255.
Membre_mdp : correspond au mot de passe du membre, sert à se connecter. Il est du même type que la colonne membre_pseudo.
Membre_email : correspond à l'adresse email du membre, sert lors d'un oublie de mot de passe et à la newsletter si celui-ci a cocher la case newsletter lors de l'inscription. Il est du même type que la colonne membre_pseudo.
Membre_rang : correspond au rang du membre, sert à savoir si le membre a accès à certaines parties du site comme l'administration, la modération, etc. Même type que la colonne membre_pseudo.
Membre_di : correspond à la date d'inscription du membre, sert à savoir quand le membre s'est inscrit sur le site. Il est de type bignit car c'est un timestamp.
Membre_dc : correspond à la date de dernière connexion du membre, sert à savoir quand le membre s'est connecter pour la dernière fois. Il est de même type que membre_di, entre autre de type bignit.
Membre_matiere : correspond à la matière favorite du membre, sert à savoir quel est la matière sa matière préférée pour pouvoir suggéré des topics où des membres réclament de l'aide dans sa matière préférée avec un niveau scolaire égal au posteur. Il est de type varchar est sa valeur est de 255.
Membre_age : correspond à l'âge du visiteur, sert à quel est l'âge du visiteur et l'afficher ou non, dans son profil. Il est de type int puisque c'est un membre.
Membre_avatar : correspond au nom de l'avatar stocké dans le dossier upload/image, sert à afficher l'avatar du membre dans son profil, dans le forum dès qu'il poste, dans un mp, etc. Il est de type varchar est sa valeur est de 255 puisque cette colonne correspond au nom de l'avatar du membre.
Membre_ip : correspond à l'adresse ip du membre, sert à au système de sécurité, par exemple au brute-force, au bannissement permanent, etc. Il est de type varchar et sa valeur de 255. Il n'est pas de type int car une adresse ip comporte des points (.).

Lib utilisée
Scolar-help utilise plusieurs lib php. Pour les formulaire, au lieu de les écrire en html ce qui fait moche avec du code php, on utilise la lib formsgc qui va généré les formulaires, codé par fab@c++ de même pour la validation, trop de condition, donc on utilise formsgcValidator, qui se couple avec formsgc.
Cette partie est assez cours mais c'est comme même une petite source d'information indispensable, il n'y a pas encore de tuto sur cette lib dommage, mais voici quelques liens utiles : pour formsgc -> http://www.legeekcafe.com/forum-sujet-589-formsgc--formsgenerator.html et pour formsgcValidator -> http://www.legeekcafe.com/forum-sujet-592-formsgcvalidator--forms-validator.html topic assez intuitif et permet les bases de formsgc donc utile.
Inscription
L'inscription va être la page qui permet au membre de s'enregistrer dans la base de données, mais attention, pas n'importe comment, on doit vérifier si tous les champs sont remplies, que l'adresse email a un format correct, etc.
Un petit rappel, la page d'inscription comporte les champs suivants : 
•	Le pseudo
•	Le mot de passe
•	La confirmation du mot de passe
•	L'email
•	La question secrète
•	La réponse secrète
•	Une captcha
•	Une case newsletter (facultatif)
•	Une case CGU (conditions générales d'utilisation)
Tout ces champs devront être répartis dans des fieldset, les-voici :
•	Identifiants : le champs pseudo, mot de passe et email.
•	Question secrète : la question secrète et la réponse secrète.
•	Captcha : une image de la captcha et un champ pour recopié la captcha 
•	Plus : une case newsletter et cgu.
Chaque champs devra être précédé d'un label.
Détaillons les champs de l'inscription plus précisément :
•	Le pseudo : un input de type text avec valeur pour l'attribut name "pseudo".
•	Le mot de passe : un input de type password avec comme valeur pour l'attribut name, "mdp".
•	La confirmation du mot de passe : un input de type password avec la valeur "mdp_conf" dans l'attribut name.
•	L'email : un input de type email avec comme valeur dans l'attribut name "email".
•	La question secrète : un select avec la valeur "question" dans l'attribut name.
•	La réponse secrète : un input de type text avec un attribut name comme valeur "reponse".
•	Une captcha : une image pointant vers la page captcha.html
•	Une case newsletter : un input de type radio avec la valeur "newsletter"  dans l'attribut name.
•	Une case CGU : un input de type radio avec la valeur "cgu" dans l'attribut name.
Pour la validation, voici les étapes à faire pour chaque champs :
•	Le pseudo : vérifier si celui-ci : contient entre 3 et 20 caractères, si le pseudo est disponible (n'est pas dans la base de donnée) et que le pseudo ne contient pas d'espace au début.
•	Le mot de passe : vérifier si il correspond à la confirmation du mot de passe.
•	L'email : vérifier si il a un format correct et qu'il n'est pas déjà associé à un compte.
•	La captcha : vérifier si elle corresponde à l'image généré.
•	CGU : vérifier si ce champs existe sinon, c'est que la case n'est pas cochée donc le membre ne peut pas s'enregistrer.
Bien sûr, la validation principale avant tout et de vérifier si tous les champs on était remplie a part la case facultatif : newsletter.
Si tout est bon, le visiteur s'enregistra dans la bdd est un message de bienvenue lui incitera à se connecter !
Connexion