-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.php
More file actions
executable file
·167 lines (143 loc) · 5.81 KB
/
index.php
File metadata and controls
executable file
·167 lines (143 loc) · 5.81 KB
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
<?php
// Inclusion des fichiers nécessaires
require __DIR__ . "/utilitaires/utils.php";
require __DIR__ . "/utilitaires/logInOut.php";
require __DIR__ . "/BDD-gestion/database.php";
require __DIR__ . "/BDD-gestion/utilisateur.php";
require __DIR__ . "/BDD-gestion/livre.php";
require __DIR__ . "/utilitaires/register.php";
require __DIR__ . "/utilitaires/changePassword.php";
require __DIR__ . "/utilitaires/recommendation-service.php";
// Initialisation de la session avec un nom personnalisé
session_name("Session_utilisateur");
session_start();
// Si la session n'est pas encore initialisée, on régénère l'ID de session
if (!isset($_SESSION['initiated'])){
session_regenerate_id();
$_SESSION['initiated']= true;
}
// Connexion à la base de données
$dbh = Database::connect();
// Gestion de la recherche d'un livre
$searchResults = null;
if (isset($_GET['search']) && !empty($_GET['search'])) {
$searchTerm = htmlspecialchars($_GET['search']); // Sécurisation du terme de recherche
try {
// Modification de la requête pour chercher spécifiquement dans le titre des livres
$query = "SELECT id, titre, auteur FROM Livres WHERE titre LIKE :search";
$stmt = $dbh->prepare($query);
$stmt->execute(['search' => '%' . $searchTerm . '%']);
$searchResults = $stmt->fetchAll(PDO::FETCH_ASSOC);
// Si des résultats sont trouvés, on les stocke dans la session
if ($searchResults) {
$_SESSION['search_results'] = $searchResults;
} else {
// Si aucun résultat, on stocke un tableau vide
$_SESSION['search_results'] = [];
}
} catch(PDOException $e) {
error_log("Erreur de recherche : " . $e->getMessage());
$_SESSION['search_results'] = []; // Si une erreur survient, tableau vide
}
}
// Appeler la fonction pour synchroniser les miniatures
syncThumbnails();
syncBooks();
// Gestion des actions spécifiques
if (isset($_GET['todo'])) {
switch ($_GET['todo']) {
case 'login':
// Si l'action est 'login', on appelle la fonction logIn
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
////var_dump($_POST);
logIn($dbh);
}
break;
case 'register':
// Si l'action est 'register', on appelle la fonction handleRegistration
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
handleRegistration($dbh);
}
break;
case 'logout':
// Si l'action est 'logout', on appelle logOut et redirige vers la page de connexion
logOut();
header("Location: index.php?page=connexion");
exit();
break;
case 'changePassword':
// Si l'action est 'changePassword', on appelle la fonction changePassword
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
changePassword($dbh);
}
break;
}
}
// Vérification de la page demandée via le paramètre 'page'
if(isset($_GET['page'])){
$askedPage = $_GET["page"];
$authorized = checkPage($askedPage); // Vérifie si la page est autorisée
$titre = "Passeur de temps"; // Titre par défaut
$lien = "styles/styles.css"; // Fichier CSS par défaut
$pageTitle = getPageTitle($askedPage); // Récupère le titre de la page demandée
if($askedPage == "connexion"){ // Si la page est "connexion", on change le fichier CSS
$lien = "styles/styles-loginout.css";
}
}
else if(isset($_GET['id'])){
// Si un ID de livre est passé dans l'URL, on charge la page du livre
$askedPage = "page_livre";
$pageTitle = "Livre";
$lien = "styles/styles.css";
$authorized = checkPage($askedPage); // Vérifie si la page est autorisée
}
// Affichage de l'en-tête HTML avec le titre et le fichier CSS approprié
echo generateHTMLHeader($pageTitle, $lien);
## ADAPTER CODE LOGIN/OUT POUR LA NOUVELLE BDD
/*
$totaux = (Utilisateur::getUtilisateur($dbh, "barry.allen"));
// traitement des contenus de formulaires
if(isset($_GET["todo"]) && $_GET["todo"] == "login") {
//echo "ICI";
logIn($dbh);
}
////var_dump($_SESSION);
echo "<br>";*/
////var_dump(password_verify("secret", '$2y$10$jFPYCoqfq5IrY1I0xASPX.OVLJxDHUR0G2S5OunyeI5LsnIwuvo8m'));
// affichage de formulaires
// code de sélection des pages, comme précédemment
?>
<script>
var loggedInUser = <?= json_encode($_SESSION['user'] ?? null) ?>;
console.log("Logged in user:", loggedInUser);
</script>
<?php
// Vérification si l'utilisateur connecté est un administrateur
$user_id = $_SESSION['user']['id'];
$stmt = $dbh->prepare("SELECT id FROM administateurs WHERE id_utilisateurs = ?");
$stmt->execute([$user_id]);
$admin = $stmt->fetch();
if($admin){
// Si l'utilisateur est administrateur, afficher un lien vers le panneau d'administration
echo '<a href="admin.php" class="floating-admin-button">Portail Admin</a>';
}
// Redirection si l'utilisateur est déjà connecté et essaie d'accéder à la page de connexion
if(isset($_GET['page']) && $_GET['page'] === 'connexion' && isset($_SESSION["loggedIn"]) && $_SESSION["loggedIn"] === true) {
header("Location: index.php?page=accueil");
exit();
}
?>
<!-- Début du contenu principal de la page -->
<div class="container-fluid ontop">
<?php echo generateMenu(); ?>
</div>
<div id="content" class="content">
<?php
// Inclus dynamiquement la page demandée par l'utilisateur
require __DIR__ . "/pages/{$askedPage}.php";
?>
</div>
<div style="position: fixed; bottom: 8px; left: 50%; transform: translateX(-50%); font-size: 12px; color: rgba(255, 255, 255, 0.25); font-family: Arial, sans-serif; opacity: 0.8; pointer-events: none; white-space: nowrap;">
Modal X2023 © Samy El Bakouri et Alexandre Buendia
</div>
</html>