-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathauthentification.php
199 lines (175 loc) · 5.58 KB
/
authentification.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
<?php
//-----------------------------
// Script d'authentification qui gère la connexion au compte client
// et la circulation entre certaines pages
//-----------------------------
require_once(realpath(__DIR__).'/php/biblio/foncCommunes.php');
$js = array();
$css = array();
$css[] = 'formulaire.css';
$titre = 'LogiKek - authentification';
$description = 'Site de vente de système d\'exploitation';
$motCle = 'OS, Linux, Windows, BSD, Apple, RHEL, Vente, logiciel';
global $maBD;
global $hasher;
//Si l'utilisateur est déjà connecté
if (isset($_SESSION['authentification']))
{
//Redirection vers sa page de dossier.
header("location:./inscription.php");
exit();
}
//Si on a redirigé un usagé vers authentification.php, la variable 'prov' du GET
//note la page d'origine.
if (isset($_GET['prov']))
{
//On l'enregistre dans la variable de session pour pouvoir la garder lors d'un refraichissement.
$_SESSION['prov'] = $_GET['prov'];
}
//Si on arrive à la page après le bouton submit 'valider' du formulaire a été cliqué.
if (isset($_POST['valider']))
{
$tabFormulaire = array();
//Le POST contient toutes les données entré par l'utilisateur dans le formulaire.
//On désinfecte les données et les enregistres dans le tableau.
foreach ($_POST as $cle => $valeur)
{
$tabFormulaire[$cle] = desinfecte($valeur);
}
//Retourne un tableau contenant les données du compte client si le nom d'utilisateur et
//le mot de passe correspond à un compte client dans la base de données.
//$tmp = $maBD->selectClientMotDePasse($tabFormulaire['nomUtilisateur'], $tabFormulaire['motDePasse']);
//Retourne un tableau contenant les données du compte client si le nom d'utilisateur
//correspond à un compte client dans la base de données.
$tmp = $maBD->selectClient($tabFormulaire['nomUtilisateur']);
//Vérifie le mot de passe entré contre le hash stocké en bd.
$bonMdp = $hasher->CheckPassword($tabFormulaire['motDePasse'], $tmp['motDePasse']);
//Si le mot de passe ne correspond pas, unset la variable.
if (!$bonMdp)
unset($tmp);
//Si le tableau est set, c'est qu'il y a un compte retourné.
if (isset($tmp))
{
//Enlève le champs id qui se situe à l'index 0.
array_shift($tmp);
$client = new Client($tmp);
//Enregistre l'objet client dans une variable de session et le nom d'utilisateur dans un autre.
$_SESSION['client'] = $client;
$_SESSION['authentification'] = $client->getNomUtilisateur();
//Met à jour l'id de session à une nouvelle valeur pour mitiger les attaques.
session_regenerate_id();
//Si à l'origine on provient d'une autre page, nous voulons y retourner.
if (isset($_SESSION['prov']))
{
switch ($_SESSION['prov'])
{
case 'dossier':
unset($_SESSION['prov']);
header("location:./authentification.php");
break;
case 'commande':
unset($_SESSION['prov']);
header("location:./commander.php");
break;
case 'changerMotDePasse':
unset($_SESSION['prov']);
header("location:./changerMotDePasse.php");
break;
case 'histCommande':
unset($_SESSION['prov']);
header("location:./historiqueCommande.php");
break;
case 'admin':
unset($_SESSION['prov']);
header("location:./admin/index.php");
break;
default:
unset($_SESSION['prov']);
header("location:./");
break;
}
exit();
}
header("location:./");
exit();
}
//Mauvais mot de passe ou nom d'utilisateur
else
{
header("location:./authentification.php?erreur=auth");
exit();
}
}
require_once("./header.php");
require_once("./sectionGauche.php");
?>
<!-- Début section central col-md-9 -->
<div class="col-md-7" id="centre">
<!-- Début du formulaire de connexion -->
<div class="row">
<?php if (isset($_GET['erreur']) && $_GET['erreur'] == 'auth'): //Si le mot de passe/nom d'utilisateur est incorrect?>
<!-- Message d'erreur affiché à l'utilisateur -->
<div class="alert alert-danger" role="alert">
<i class="fa fa-exclamation-triangle"></i>
Nom d'utilisateur ou mot de passe incorrect.
</div>
<?php endif; ?>
<!-- Formulaire pour la connexion au compte client -->
<form id="formConnexion" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST">
<table>
<tbody>
<tr>
<td class="centrer" colspan="2">
<h3>Authentification</h3>
</td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<!-- Nom d'utilisateur -->
<tr>
<td class="droit">
<label for="nomUtilisateur">Nom d'utilisateur:</label>
</td>
<td>
<input id="nomUtilisateur" type="text" name="nomUtilisateur">
</td>
</tr>
<!-- Mot de passe -->
<tr>
<td class="droit">
<label for="motDePasse">Mot de passe:</label>
</td>
<td>
<input id="motDePasse" type="password" name="motDePasse">
</td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<!-- Bouton pour envoyer le formulaire -->
<tr>
<td class="centrer" colspan="2">
<input type="submit" name="valider" value="Connecter">
</td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<!-- Lien pour aller à la page de création d'un nouveau compte -->
<tr>
<td class="centrer" colspan="2">
<a href="./inscription.php">Créer un nouveau compte</a>
</td>
</tr>
</tbody>
</table>
</form>
<!-- Contenu principal -->
</div> <!-- Fin du formulaire -->
</div> <!-- Fin section central col-md-9 -->
<div class="col-md-1"> <!-- Début Section de droite central -->
</div>
<!-- Fin section de droite central -->
</div>
<?php require_once('./footer.php'); ?>