Académique Documents
Professionnel Documents
Culture Documents
EPIGRAPHE
Page |2
DEDICCACE
Page |3
Remerciements
Page |4
INTRODUCTION GENERALE
Cette machine intelligente, étant une synergie de deux entités : une partie
matérielle appelée « Hardware » comportant une plaquette électronique sur laquelle
sont soudés et/ou connectés l’ensemble des composants essentiels à son
fonctionnement et d’une partie logicielle appelée « Software » offrant à l’utilisateur un
espace de travail appeler interface homme machine car sans laquelle ce dernier serait
une âme sans vie.
Une première couche logicielle fut créée aux environs de 1960 pour assurer
la liaison entre les ressources matérielles, l’utilisateur et les applications, et permet de
dissocier les programmes (Software) et les matériels (Hardware) afin de simplifier la
gestion des ressources et offrir à l’utilisateur une interface homme-machine. Ces
applications (logiciel d’application à n’est pas confondre avec le logiciel de base) sont
des programmes écrit en langage machine, pas compréhensible par le commun des
mortels car il s’agit d’une suite de 0 et 1 adapté à l’ordinateur qui permettent
d’effectuer un certain nombre de tâches de façons rapide et précise.
Page |8
0.3 PROBLEMATIQUE
Pour notre étude, nous avons pu constater que l’ensemble des traitements
des informations tel que la paye du personnel se fait manuellement, ce qui engendre un
certain nombre de problème tels que la lenteur et le risque de perte d’informations
voire même une prise de décision non contrôlé par le gestionnaire.
0.4 HYPOTHESE
0.5.1 METHODES
Ainsi dit, pour élaborer ce travail de fin de cycle, nous avons fait recours
aux méthodes suivantes :
3
La Rousse illustrée
P a g e | 10
0.5.2 TECHNIQUES
Une technique est définie comme étant un ensemble d’outils et d’instrument
utilisés par un chercheur pour aboutir à un but.
I.0. INTRODUCTION
Les règlent scientifique nous obliquent à clarifier les termes usés dans ce
travail de fin de cycle dans le but de lever les équivoques que peuvent avoir les
concepts dont nous avons fait usage. C’est ainsi que dans ce chapitre nous sommes
appelés à définir tous les concepts relatifs au sujet sous examen et ensuite nous
parlerons de concepts y afférents.
I.1.1. Mise
La mise est l’action de mettre, fait d’être mis (dans une nouvelle position).
Exemple : la mise sur pied d’un programme, la mise en bouteilles d’un vin, la mise en
valeur d’une propriété4.
I. 1.2. Place
I.1.4. Système
Ensemble abstrait dont les éléments sont coordonnées par une loi une théorie.
Ensemble de pratiques organisée en fonction d’un but7.
I.1.4.3.2.1. Matériel
8
Www.dudod.com
9
Www.cyberuniversity.com
P a g e | 13
I.1.4.3.2.2. Logiciel
Il englobe chacun des éléments qui peuvent être classés dans l’environnement
liés aux programmes informatiques et applications. C’est la partie « Software » du
système qui fait référence aux informations et systèmes virtuels programmées,
numériques et intangibles.
I.1.4.3.2.3. Humain
Il existe six classes de systèmes informatiques selon le domaine dans lequel ils
sont utilisés.
10
Www.cyberuniversity.com
P a g e | 14
I.1.4. Informatique
11
Www.wikipédia.com : domaines d’application de l’informatique.
P a g e | 16
Sciences informatiques :
Génie informatique
Système d’information
Technologie de l’information
Génie logiciel
I.1.5. Gestion13
12
Www.orientatation.ch
13
Www.pieven.com
P a g e | 17
La gestion est une science dans la mesure où elle présente et utilise des
concepts biens définis et des théories développées à partir d’hypothèses, d’expériences
et d’analyses.
Pour réussir dans son métier, un gestionnaire doit utiliser son expérience, ses
connaissances, ses observations personnelles et ses intuitions, donc il est considéré
comme un artiste lorsqu’il utilise efficacement ses aptitudes personnelles et ses
qualités humaines dans la gestion des ressources de l’entreprise. En résumé on peut
dire que la gestion présente l’aspect art et l’aspect science au même temps, puisque les
deux se complètent.
I.1.5.2.1. Planification
P a g e | 18
I.1.5.2.2. L’organisation
I.1.5.2.3. La direction
Dans l’exercice de cette fonction le dirigeant communique avec tous ceux qui
participent à l’atteinte des objectifs visés. Un dirigeant est appelé principalement à :
I.1.5.2.4. Le contrôle
Ces ressources humaines sont l'ensemble des salariés de tous status (ouvriers,
employés, cadres) faisant partie de l'organisation, mais aussi et de plu sen plus liés à
elle par des rapports de sujétion (ainsi, les prestataires extérieurs, ou sous traitants,
sont considérés comme faisant partie de fait du périmètre des ressources humaines de
l'entreprise).
Dans un premier temps, cette fonction est entendue dans une perspective
opérationnelle. Il s'agit d'administrer un personnel qui peut être numériquement
important et réparti en différents niveaux de hiérarchie ou de qualification : gestion des
carrières, gestion préviosionnelle des emplois et des compétences, recrutement,
formation).
I.1.6. Paie14
La paie est le terme qui correspond à la somme d’argent versée à une personne
physique en échange d’un travail effectué. La paie fait objet d’un calcul inscrit sur un
bulletin de paie informatisé, il est personnel et doit être conservé à vie.
La paie est une donnée du contrat de travail qui peut être négociée avec le
représentant de l’entreprise ou le responsable des ressources humaines en fonction du
travail à fournir et de l’expérience professionnelle. La négociation se fait au moment
de l’embauche ou au moment de l’entretien d’évaluation annuel. Le bulletin de paie
doit être remis au salarié de manière régulière (généralement tous les mois) au moment
du versement de la paie.
I.1.6. Bureau
Le bureau peut être définit comme lieu de travail des employés d’une
administration ou d’une entreprise, lieu où sont centralisés les services administratifs
et commerciaux d’une entreprise.
I.1.7. Gestionnaire15
14
Www.studocu.com
15
Www.wikipédia.com : gestionnaire/définition
16
Etude sur l'efficacité des Bureaux Gestionnaires ACCELERE !2
P a g e | 21
Donnée de sortie
Dans ce langage, le code source (celui que vous écrivez) est tout d’abord
compilé, par un logiciel qu’on appelle compilateur, en un code binaire qu’un humain
ne peut pas lire mais qu’il est trop facile à lire pour un ordinateur. C’est alors le
système d’exploitation qui va utiliser le code binaire et les données pour calculer les
données de sorties.
17
www.google.com: programmation-langage compilé
18
www.google.com: programmation-langage interprété.
P a g e | 22
Code source
Compilateur
Données d’entrée
Données de sortie
Nous voici à la fin de ce premier chapitre, qui plante les décors d’une belle
aventure scientifique en définissant les concepts et expressions de base et connexes lié
au sujet qui fait l’objet de notre étude.
II.0. INTRODUCTION
- A l’Est : par sa voisine TSHIKAPA 1 qu’elle sont séparée par la rivière Kasaï ;
- A l’Ouest : elle fait limite avec la Sous-Division de Katanga ;
- Au Sud : par la rivière Tshikapa et sa voisine Kanzala et ;
- Au Nord : par la Sous-Division Provinciale de Katanga.
P a g e | 24
a) MISSION PEDAGOGIQUE
- Veiller à respect du calendrier scolaire,
- Veiller à l’exécution et en respect des normes pédagogiques édictées par la
hiérarchie ;
- Exploiter les différents rapports des établissements scolaires ;
- Exploiter les rapports des inspecteurs itinérants et des conseillers
d’enseignement ;
- Assurer l’organisation du test national de fin d’études primaires (TENAFEP).
b) MISSION DE LA BONNE GOUVERNANCE
- S’assurer de l’existence effective et du fonctionnement des organes de gestion
des établissements que le conseil de gestion scolaire, le comité des parents et
des élèves (COGE, COPA, et COEL),
- S’occuper de la participation effective de COPA et COGE à la gestion
pédagogique, administrative, financière et patrimoine des établissements ;
- S’occupe la gestion et la maitrise des mouvements du personnel (assis et
débout) ;
- Assurer le paiement des salaires du personnel ;
- Veiller au respect de l’application des normes de construction des
établissements d’enseignement et à leur maintenance ; et enfin
- Assure la gestion administrative tant financière du bureau de la Sous-Division.
II.4.2. FONCTIONNEMENT
structures chacune d’elle joue son rôle dans son bureau telle qu’elle est indiquée.
Lorsqu’il y a visite, les visiteurs passe au préalable par la réception il fasse la
présentation avec le motif de la visité, à son tour il va diriger le visiteur vers la porte de
secrétariat, le secrétaire doit l’accueillir et il doit se réagir par rapport au motif de
visité, ensuite il vous donne l’accès de voir n’importe quel bureau que vous avez
besoin.
C’est toujours un document tenu lors d’une invitation qui arrive au sein du
bureau pour l’enregistrement des numéros des invitations, au référant article,
date d’expédition, service émetteur, motif, destinataire, observation, date de
réponse, etc…
- Connaitre du début à la fin toute les activités qui marche de pair avec les
instructions de la hiérarchie aux différents gestions ;
- Elaborer un rapport à la fin du chaque période des examens et chaque fin du
trimestre pour s’assurer bel et bien la fonctionnalités d’une école.
P a g e | 27
III.1. INTRODUCTION
Dans ce chapitre nous allons montrer comment on a procédé étape par étape
pour mener à fond le sujet qui fait l’objet de notre étude. Un cahier de charge a été
initialement défini (les besoins de l’employé), la modélisation a été faite sur JMerise
pour alléger la tâche d’avoir un MLD écrite à la main et les lignes de code ont été
écrites en PHP et JavaScript.
5.
SECTION I
ETAPE CONCEPTUELLE
Monde réel
1. Analyse
Spécification de la
BD Schéma externe
2. Modélisation 6. Vues
3. Traduction
BD
Schéma relationnel Physique
directement les uns des autres constitueront des objets conceptuels reflet d’objet de
l’entreprise.
Un objet : un objet est toute entité abstraite ou concrète ayant une existence autonome
c’est –à-dire existence propre et présentant un intérêt certain dans un domaine de
question considérée19.
Une propriété : est définie comme étant la plus petite partie logique d’information
manipulée par l’entreprise ayant un sens en elle-même20
Un identifiant : identifiant est une propriété qui permet de distinguer sans ambigüité
l’occurrence d’un objet 21
Une relation (association) : relation ou association est le lien qui existe entre deux
objets ou plusieurs
Ainsi pour recenser les objets, nous avons suivi la démarche proposée par D. DIONSI
qui consiste à :
Pour notre application (Système informatique), nous avons recensé les objets suivants :
o Administrateur (Gestionnaire)
o Personnel
o Opérateur de saisie1
o Opérateur de saisie2
o Caissière
o Listing
o Compte
o Payement
19
D.DIONSI, L’essentiel sur Merise, Ed. EYLOLLES, 1995, P50
20
(),( 24) D.DIONSI, L’essentiel sur Merise, Ed. EYLOLLES, 1995, P50
21
P a g e | 32
-Sexe
-Phone_number
-Date_naiss
-Lieu_naiss
-Grade
-Fonction
7 Autoriser - 2 Gestionnaire Caissière 10 AN
8 Utiliser 2 Caissière Listing 10 AN
-
9 Payer - 2 Caissière Personnel 10 AN
10 Valider - 2 Caissière Payement 10 AN
11 Percevoir - 2 Personnel Payement 10 AN
12 Consulter - 2 Gestionnaire Payement 10 AN
Tableau III.2. Description des relations
III.2.3.3 ETUDE DE CONTRAINTE D’INTEDRITE FONCTIONNELLE (C.I.F)
III.2.3.3.1 Définition
Une contrainte est une obligation à laquelle on ne peut échapper. Sachant qu’il
y a plusieurs catégories de contraintes intra qui est la contrainte intra relation.
22
D.DIONSI, op. cit, P74
P a g e | 35
MCD
Règle numéro 1 :
a) Une entité du MCD devient une relation, c’est à dire une table. Dans un SGBD
(Système de Gestion de base de données) de type relationnel, une table est une
structure tabulaire dont chaque ligne correspond aux données d'un objet enregistré
(d'où le terme enregistrement) et où chaque colonne correspond à une propriété de cet
objet. Une table contiendra donc un ensemble d’enregistrements. Une ligne correspond
à un enregistrement. Une colonne correspond à un champ. La valeur prise par un
champ pour un enregistrement donné est située à l’intersection ligne-colonne
correspondant à enregistrement-champ. Il n’y a pas de limite théorique au nombre
d’enregistrements que peut contenir une table. Par contre, la limite est liée à l’espace
de stockage.
Compte
Compte (Num_compte, Nom_compte, Type_compte, Crédit)
Num_compte Num_compte : clé primaire de la table Caissière
Nom_Compt
e
Type_compte
Crédit
Figure III.3. Présentation d’une entité
Règle numéro 2 :
Table caissière
Table gestionnaire
Règle numéro 3 :
PERSONNE
L Caissière Personnel (Id, Matricule, Num_Eng, Date_Eng, Nom, Prénom, Sexe, Photo,
Phone, Date_naiss, Lieu_naiss, Grade, Fonction
1,n 1,n
Id Matricule ) Matricule : clé primaire de la table Personnel.
Matricule Payer Nom_caissi
Num_Eng ère Caissière (Matricule, Nom_caissière, Phone, Mdp) Matricule : clé
Date_Eng Phone primaire de la table gestionnaire
Nom Mdp
Prénom
Sexe PAYER (#Matricule, # Matricule_cais)
Photo # Matricule, # Matricule_cais : clé primaire composée de la table PAYER
Phone # Matricule : clé étrangère qui référence Matricule de la table PERSONNEL # #Matricule_cais : clé étrangère qui
Date_naiss référence Matricule_cais de la table caissière.
Lieu_naiss
Grade
Fonction
Figure III.5. Présentation d’une entité du type N : N
Table Personnel
Id Matricule Num_enr Date_enr Nom Prénom Sex Photo Phone Date_nais Lieu_naiss Grade Fonction
e s
1 7/140.201R 001 14/08/2020 LULUA Jean M - 081025 05/08/1991 Kananga - -
2 7/140.002E 002 15/08/2020 MBIYE Laurent M - 081456 02/06/1993 Boma - -
Y
3 7/140.056H 003 15/08/2020 YAMBA Prince M - 01205 08/08/1991 Tshikapa - -
Table caissière
MLD
SECTION II
ETAPE ORGANISSATIONNELLE
Cette étape est la deuxième étape de conception de notre base de données, car
elle est considérée comme image de réalité. Toute réalité complète doit être
représentée pour être comprise.
Elle permet de définir la présentation dans l’organisation est les modalités aux
données ainsi que la répartition et les modalités d’exécution des traitements décrits
dans les opérations de gestions en tenant compte de considérations d’organisation en
particulier, les parcours des informations, le rôle des acteurs, les niveaux décisions et
les habitants23.
C’est alors que nous aboutirons aux modèles organisationnel de données (MOD) à
partir du MCD, ce qui nous amène à définir deux niveaux du MOD :
Le MOD est tournés vers la gestion des droits des utilisateurs sur une base de
données. C’est une reprise directe du MCD correspondant, au sein duquel on précise
les droits d’un profil d’utilisateurs (i.e. un acteur, un poste de travail, ces mêmes
acteurs internes que l’on retrouve dans le modèle de flux (MF) et le modèle
organisationnel des traitements (MOT et MOTA)). On rédige un MOD par acteur
interne. Les droits sont précisés : - soit à côté de chaque entité et association ; - soit en
lieu et place des propriétés (resp. Propriétés portées) des entités (resp. Association).
Ce passage consistera donc à supprimer dans le MCD des objet set des
relations qui ne seront pas mémorisé informatiquement, dans le cas contraire c’est-à-
dire, qu’il y a rien à supprimer, alors notre MCD est égal au MOD global. Pour notre
application nous avons pu constater qu’il n’y a pas d’objets ni de relations à
supprimer, ce qui nous amène à dire que notre MCD = MOD global. Ainsi donc, nous
avons dégager deux différents MOD locaux à savoir :
Gestionnaire Personnel
1,1 1, n
N=1 Engager N = 100
T = 55 T = 326
1, n
1 ,1
OPS1
1, n 1, n
Instruire Inscrire
N=1
T = 55
Compte
Créditer N=1
T = 55
Valider
Autoriser
1 ,1 1, n
Personnel Utiliser
1,n
Percevo
Permettre N = 100 Payer
ir
T = 326
Listing
OPS2
N=1
N=1 Déclarer T = 311
T = 55
Dresser
Dans cette étape, il s’agira pour nous en tant que concepteur d’un nouveau
système d’exprimer la taille de données du personnel enregistré dans la BDD en terme
de nombre de caractères, l’estimation de cette taille doit se garder sur le format
apparent de représentation que l’utilisateur lui indique.
P a g e | 46
PERSONNEL
GESTIONNAIRE OPS1 OPS2
-Id …………………….5
-Matricule# ……..10 -Matricule# ……..10 -Matricule# ……..10
-Matricule …......10
-Nom_Admin …..20 -Nom_OPS ………20 -Nom_OPS ………20
-Phone …………….15 -Num_Eng ……5
-Phone …………….15 -Phone …………….15
-Mdp ……………….10 -Date_Eng …...10
-Mdp ……………….10 -Mdp ……………….10
-Matricule# ……...10
TAILLE ………….55 -Nom ……………..…20
TAILLE ………….55 TAILLE ………….55
-Prénom………….…20
-Sexe ………..………..1
Caissière -Photo …………….150 Compte
-Phone …………..…15 Listing
-Matricule# ……..10 -Date_naiss ………20 -Num_compte# ……..10
-Nom_caissière...20 -Lieu_naiss .………20 -Trimestre……….…….5
-Nom_Compte ……...20
-Phone …………….15 -Grade ……..………20 -Mois ………..……....10
-Type_compte..….….10
-Mdp ……………….10 -Fonction …………20 -Num_list# .........10
-Crédit …………………..15
-Id ………………….…….5
TAILLE ………….55 TAILLE ………….326 -Num_Eng …….10
TAILLE ………….55
-Matricule……...10
-Nom………..…20
Payement -Prénom….….…20
-Sexe…..………..1
-Num_paie………………..…….10 -Photo .……….150
-Num_list…..……………..…....10 -Grade ………...20
-Num_list# ......................10 -Fonction ……...20
-Matricule……………...10 -Montant ………10
-Nom………..…………20
-Montant.……………...20 TAILLE …….311
-matricule_caissier……10
-Date_paie……..10
TAILLE ………….100
VOL.FICH = N.T
T : taille du fichier
P a g e | 47
Ainsi donc, ce volume de la BDD est obtenu par la sommation des volumes de
tous les fichiers qui ont constitués notre BDD.
VOL.BDD = ∑ VOL.FICH
Nous tenons à signaler que notre MOD global a des relations du type autre que père et
fils. Ces relations plus loin deviendrons des tables (fichiers). Nous devons
obligatoirement calculer leurs volumes pour estimer la taille de notre BDD.
Nous avons 6 relations qui sont du type père et fils qui deviendront de fichiers. Le
volume est obtenu de la manière que les autres fichiers de la base de données. Mais
pour trouver l’effectif (N) de la relation, nous allons l’obtenir à partir de la formule
suivante : N = Ni.m
Permettre 1
Enregistre 300
Dresser 3
Utiliser 3
Payer 300
Valider 300
Percevoir 100
Consulter 30
VOL.BDD = 10560
Le résultat obtenu sera multiplié par un coefficient (α) entre 1 à 3. Pour trouver le
volume total de notre BDD nous allons prendre le coefficient 3
SECTION III
ETAPE D’EXECUTION
Pour une bonne manipulation de la base de données, nous avons fait recours à
un langage de programmation orienté objet qui est le PHP.
PHP
<?PHP
Try{
//session_start();
$connexion = new
PDO('mysql:host=127.0.0.1;charset=utf8;dbname=paie_personnels','root','152020p
rince_yamba');
}catch (PDOException $ex){
die ('Echec de connexion :' . $ex->getMessage());}
?>
Pour éviter qu’un utilisateur mal intentionné puisse avoir accès aux données,
on a créé un fichier de sécurité et de déconnexion pour le rediriger à la page login en
déclarant la session Start (). Une session en PHP correspond à une façon de stocker des
données différentes pour chaque utilisateur en utilisant un identifiant de session
unique. Les identifiants de session vont généralement être envoyés au navigateur via
des cookies de session et vont être utilisés pour récupérer les données existantes de la
session.
Un des grands intérêts des sessions est qu’on va pouvoir conserver des
informations pour un utilisateur lorsqu’il navigue d’une page à une autre. De plus, les
informations de session ne vont cette fois-ci pas être stockées sur les ordinateurs de
vos visiteurs à la différence des cookies mais plutôt côté serveur ce qui fait que les
sessions vont pouvoir être beaucoup plus sûres que les cookies.
Notez toutefois que le but des sessions n’est pas de conserver des informations
indéfiniment mais simplement durant une « session ». Une session démarre dès que la
fonction session Start () est appelée et se termine en général dès que la fenêtre
courante du navigateur est fermée (à moins qu’on appelle une fonction pour terminer
la session de manière anticipée ou qu’un cookie de session avec une durée de vie plus
longues ait été défini).
Pour pouvoir utiliser les variables de session, il va avant tout falloir qu’une
session soit démarrée à un moment ou à un autre. Pour démarrer une session en PHP,
on va utiliser la fonction session Start (). Cette fonction va se charger de vérifier si une
session a déjà été démarrée en recherchant la présence d’un identifiant de session et, si
ce n’est pas le cas, va démarrer une nouvelle session et générer un identifiant de
session unique pour un utilisateur.
Il va falloir appeler session Start () avant toute autre opération dans nos pages,
c’est-à-dire au début de celles-ci.
Par ailleurs, notez qu’il va falloir appeler session Start () dans chaque page où
on souhaite pouvoir accéder aux variables de session. En pratique, on créera
P a g e | 55
généralement une page header.php qui va contenir notre fonction session Start () et
qu’on va inclure à l’aide de include ou require dans les pages voulues d’un site.
Lorsqu’une session est démarrée, c’est-à-dire lorsqu’un utilisateur qui ne possède pas
encore d’identifiant de session demande à accéder à une page contenant session Start
(), cette fonction va générer un identifiant de session unique qui va généralement être
envoyé au navigateur sous forme de cookie sous le nom PHPSESSID.
Pour être tout à fait précis, le PHP supporte deux méthodes pour garder la trace des
sessions : via des cookies ou via l’URL. Si les cookies sont activés, le PHP va préférer
leur utilisation. C’est le comportement recommandé. Dans le cas contraire, les
informations de session vont être passées via l’URL.
<?php
// page SecurityAction.php
session_start();
if(!isset($_SESSION['auth'])){
header ('Location: login.php');}
?>
<?php
// page LoginOutAction.php
session_start();
$_SESSION = [];
session_destroy ();
header('Location: ../../login.php' )
?>
La page index est la première page qui s’ouvre lorsque sur un navigateur web
l’adresse de notre application est saisie. Pour styliser cette page on n’a pas utilisé notre
propre CSS mais on a fait appeler à bootstrap.
Bootstrap est une collection d’outils utiles à la création du design (graphisme,
animation et interaction avec la page dans le navigateur, etc.) de sites et d’application
web. C’est un ensemble qui contient des codes HTML et CSS, des formulaires,
boutons, outils de navigation et autres élements interactifs, ainsi que des extensions
javascript en option. C’est l’un des projets les plus populaires sur la plate-forme de
gestion de développement GitHub.
<?php
session_start();
if(isset($_POST['validate'])){
if(!empty($_POST['nom_admin']) AND !empty($_POST['password'])){
$admin_par_defaut = "Admin";
$password_par_defaut = "Admin";
$admin_saisi = htmlspecialchars($_POST['nom_admin']);
$password_saisi = htmlspecialchars($_POST['password']);
if($admin_saisi == $admin_par_defaut AND
$password_saisi == $password_par_defaut){
$_SESSION['auth'] = $password_saisi;
Header ('Location : Accueil.php');
}else{
$errorMsg ="Vous n'êtes pas l'administrateur...!";
}
}else{
$errorMsg ="Veuillez compléter tous les champs...";
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="css/bootstrap.Css">
<title>Authentification_admin</title>
</head>
<body>
<?php
Include ('Includes/Navbar.php')
?>
<main class="container mt-4 md-5 align="center">
<div align="center">
<div class="col-md-12">
<br>
<h1 > Authentification de Admin </h1>
<P class="btn btn-secondary">
Bureau gestionnaire de TSHIKAPA </P>
<br>
<?php
if(isset($errorMsg)){
echo '<p>'.$errorMsg. '</p>';
}
?>
P a g e | 57
<div class="col-md-6">
<div class="btn btn-secondary" </div>
<br><br>
<form method="POST" action="" >
<div class="form-group">
<label for="nom_admin">Nom_admin</label>
<input type="text" name="nom_admin"class="form-control" autocomplete="Off">
</div>
<br>
<div class="form-group">
<label for="password">Password</label>
<input type="password" name="password"class="form-control">
</div>
<br>
<input type="submit" class="btn btn-danger"name="validate" >
</form>
</div>
</div>
</div>
</main>
</body>
</html>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
P a g e | 58
</div>
</div>
</section>
<div class="copy">
<p>copy 2022 <a href="#">fela-christian</a></p>
</div>
</body>
</html>
III.2.6.4 Script HTML pour créer le formulaire d’insertion d’un nouvel agent
<?php
Require('Actions/admin/SignupAction.php');
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- <meta http-equiv="X-UA-Comatible" content="ie=egde"> --->
<title></title>
<link rel="stylesheet" href="Style1.css">
</head>
<body>
<br> <br>
<?php
if(isset($errorMsg)){
echo '<p>'.$errorMsg. '</p>';
}
P a g e | 60
?>
<div class="wraper">
<section class="form signup">
<header> Creation_agents </header>
<form action="" method="POST">
<?php
if(isset($errorMsg)){
echo '<p>'.$errorMsg. '</p>';
}
?>
<div class="error-txt"></div>
<div class="name-details">
<div class="field input">
<label for="">Num_matricule</label>
<input type="text" name="matricule" placeholder ="Enter name "required>
</div>
<div class="field input">
<label for="">Nom</label>
<input type="text" name="nom" placeholder ="Enter num signup "required>
</div>
<div class="field input">
<label for="">Prenom</label>
<input type="text" name="prenom" placeholder ="Enter date dignup"required>
</div>
</div>
<div class="name-details">
<div class="field input">
<label for="">Sexe</label>
<input type="text" name="sexe" placeholder ="Enter name"required>
</div>
<div class="field input">
<label for="">Photo</label>
<input type="file" name="photo" placeholder ="choissez une image"required>
</div>
</div>
<div class="name-details">
<div class="field input">
<label for="">Phone_number</label>
<input type="text" name="phone" placeholder ="Numéro de téléphone"required>
</div>
<div class="field input">
<label for=""> Date_naissance </label><input
type="date" name="date_naissaince" placeholder ="Date de naissance"required>
</div>
<div class="field input">
<label for=""> Lieu_naissance </label>
P a g e | 61
<?php
session_start();
Require('Actions/Database.php');
//validation du formulaire
if(isset($_POST['validate'])){
// Vérifier si l'user a completer tous les champs
if(!empty($_POST['matricule'])
AND !empty($_POST['nom'])
P a g e | 62
AND !empty($_POST['prenom'])
AND !empty($_POST['sexe'])
AND !empty($_POST['photo'])
AND !empty($_POST['phone'])
AND !empty($_POST['date_naissance'])
AND !empty($_POST['lieu_naissance'])
);
// Les données de l'utilisateur
$user_matricule = htmlspecialchars($_POST['matricule']);
$user_nom = htmlspecialchars($_POST['nom']);
$user_prenom = htmlspecialchars($_POST['prenom']);
$user_sexe = htmlspecialchars($_POST['sexe']);
$user_photo = htmlspecialchars($_POST['photo']);
$user_phone = htmlspecialchars($_POST['phone']);
$user_date_naissance = htmlspecialchars($_POST['date_naissance']);
$user_lieu_naissance = htmlspecialchars($_POST['lieu_naissance']);
$grade = htmlspecialchars($_POST['grade']);
$fonction = htmlspecialchars($_POST['fonction']);
$num_eng = htmlspecialchars($_POST['num_eng']);
$date_eng = htmlspecialchars($_POST['date_eng']);
// Vérifie si l'user existe déjà dans le site
$checkIfUserAlreadyExists = $connexion->prepare('SELECT matricule FROM
personnel WHERE matricule = ?');
$checkIfUserAlreadyExists->execute(array($user_matricule));
if($checkIfUserAlreadyExists->rowCount()== 0){
//Insérer l'utilisateur ds la bd
$insertUserOnWebSite = $connexion->prepare('INSERT INTO
`personnel` (`matricule`, `nom`, `prenom`, `sexe`, `photo`, `phone`,
`date_naissance`, `lieu_naissance`, `grade`, `fonction`, `num_eng`,
`date_eng`)VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)');
$insertUserOnWebSite->execute(array(
$user_matricule,$user_nom,$user_prenom,$user_sexe,$user_photo,$user_phone,
$user_date_naissance,$user_lieu_naissance,$grade,$fonction,$num_eng,
$date_eng));
// Récupérer les infos de user
$getInfoOfThisUserReq = $connexion->prepare('SELECT * FROM
personnel WHERE nom= ? AND prenom= ? AND ');
$getInfoOfThisUserReq>execute(array($user_matricule,$user_nom,
$user_prenom,$user_sexe,$user_photo,$user_phone,$user_date_naissance,
$user_lieu_naissance,$grade,$fonction,$num_eng,$date_eng));
$userInfos = $getInfoOfThisUserReq->fetch();
//Authentification de user sur le site et récupérer ses données
dans des variables globales sessions
$_SESSION ['auth'] = true;
$_SESSION ['id'] = $usersInfos['id'];
$_SESSION ['matricule'] = $usersInfos['matricule'];
$_SESSION ['nom'] = $usersInfos['prenom];
P a g e | 63
Nb : Cette même page CSS sera appeler pour styler la page listing car elles
utiliser les mêmes attributs HTML
@import url('https://fonts.googleapis.com/css2?family=poppins:wght@200');
<?php
P a g e | 65
Require('Actions/admin/listingAction.php');
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- <meta http-equiv="X-UA-Comatible" content="ie=egde"> --->
<title></title>
<link rel="stylesheet" href="Style1.css">
</head>
<body>
<br> <br>
<?php
if(isset($errorMsg)){
echo '<p>'.$errorMsg. '</p>';
}
?>
<div class="wraper">
<section class="form signup">
<header> Creation_agents </header>
<form action="" method="POST">
<?php
if(isset($errorMsg)){
echo '<p>'.$errorMsg. '</p>';
}
?>
<div class="error-txt"></div>
<div class="name-details">
<div class="field input">
<label for="">trimestre</label>
<input type="text" name="trimestre" placeholder ="Enter trimestre "required>
</div>
<div class="field input">
<label for="">mois</label>
<input type="text" name="mois" placeholder ="Enter moth "required>
</div>
</div>
<div class="name-details">
<div class="field input">
<label for="">Num_matricule</label>
<input type="text" name="matricule" placeholder ="Enter name "required>
</div>
<div class="field input">
<label for="">Nom</label>
<input type="text" name="nom" placeholder ="Enter num signup "required>
</div>
P a g e | 66
</form>
<div class="link">Already signed up? <a href="#">Login now</a></div>
</div>
</section>
</div>
</body>
</html>
III.2.6.8 Script PHP pour créer le listing dans la BDD
<?php
session_start();
Require('Actions/Database.php');
//validation du formulaire
if(isset($_POST['validate'])){
// Vérifier si l'user a completer tous les champs
if(!empty($_POST['matricule'])
AND !empty($_POST['nom'])
AND !empty($_POST['prenom'])
AND !empty($_POST['sexe'])
AND !empty($_POST['photo'])
AND !empty($_POST['phone'])
AND !empty($_POST['date_naissance'])
AND !empty($_POST['lieu_naissance'])
);
// Les données de l'utilisateur
$user_matricule = htmlspecialchars($_POST['matricule']);
$user_nom = htmlspecialchars($_POST['nom']);
$user_prenom = htmlspecialchars($_POST['prenom']);
$user_sexe = htmlspecialchars($_POST['sexe']);
$user_photo = htmlspecialchars($_POST['photo']);
$user_phone = htmlspecialchars($_POST['phone']);
$user_date_naissance = htmlspecialchars($_POST['date_naissance']);
$user_lieu_naissance = htmlspecialchars($_POST['lieu_naissance']);
$grade = htmlspecialchars($_POST['grade']);
$fonction = htmlspecialchars($_POST['fonction']);
$num_eng = htmlspecialchars($_POST['num_eng']);
$date_eng = htmlspecialchars($_POST['date_eng']);
// Vérifie si l'user existe déjà dans le site
$checkIfUserAlreadyExists = $connexion->prepare('SELECT matricule FROM
personnel WHERE matricule = ?');
$checkIfUserAlreadyExists->execute(array($user_matricule));
if($checkIfUserAlreadyExists->rowCount()== 0){
//Insérer l'utilisateur ds la bd
$insertUserOnWebSite = $connexion->prepare('INSERT INTO
`personnel` (`matricule`, `nom`, `prenom`, `sexe`, `photo`, `phone`,
`date_naissance`, `lieu_naissance`, `grade`, `fonction`, `num_eng`,
`date_eng`)VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)');$insertUserOnWebSite -
P a g e | 68
>execute(array($user_matricule,$user_nom,$user_prenom,$user_sexe,$user_photo,
$user_phone,$user_date_naissance,$user_lieu_naissance,$grade,$fonction,
$num_eng,$date_eng));
// Récupérer les infos de user
$getInfoOfThisUserReq = $connexion->prepare('SELECT * FROM
personnel WHERE nom= ? AND prenom= ? AND ');
$getInfoOfThisUserReq->execute(array($user_matricule,$user_nom,
$user_prenom,$user_sexe,$user_photo,
$user_phone,$user_date_naissance,$user_lieu_naissance,$grade,$fonction,
$num_eng,$date_eng));
$userInfos = $getInfoOfThisUserReq->fetch();
//Authentification de user sur le site et récupérer ses données
dans des variables globales sessions
$_SESSION ['auth'] = true;
$_SESSION ['id'] = $usersInfos['id'];
$_SESSION ['matricule'] = $usersInfos['matricule'];
$_SESSION ['nom'] = $usersInfos['prenom];
//Rédiriger user vers la page d'accueil
Header ('Location:Index.php ');
}else{
$errorMsg = "L'utilisateur existe déjà sur le site";
}
}
if (!$_SESSION['auth']){
header('location: login.php');
}
?>
Conclusion partielle
Dans ce chapitre, nous avons pris notre temps pour essayer d’exposer
quelques fichiers qui participent au fonctionnement de notre application.
P a g e | 69
CONCLUSION GENERALE
Dans le premier chapitre, nous avons pris le soin de définir les concepts
de base pour avoir une étude claire du travail qui nous attendait et dans le
second chapitre, nous sommes descendus au site de la sous division pour
récolter les données, poser de questions d’enquêtes dans le but d’avoir de data
fiable.
BIBLIOGRAPHIE
P a g e | 71
TABLE DE MATIERE