diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..aafa768
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+Thumbs.db
\ No newline at end of file
diff --git a/config/connexion_sql.php b/config/connexion_sql.php
index 51ce3d2..852635d 100644
--- a/config/connexion_sql.php
+++ b/config/connexion_sql.php
@@ -2,7 +2,7 @@
// Connexion à la base de données
try
{
- $bdd = new PDO('mysql:host=IP:3307;dbname=CARIA', 'user', 'mdp',array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
+ $bdd = new PDO('mysql:host=IP:3307;dbname=CARIA', 'USER', 'MDP',array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
}
catch(Exception $e)
{
diff --git a/config/images/Thumbs.db b/config/images/Thumbs.db
index 1a0e301..624941b 100644
Binary files a/config/images/Thumbs.db and b/config/images/Thumbs.db differ
diff --git a/controleur/connexion.php b/controleur/connexion.php
index db54195..f11bc60 100644
--- a/controleur/connexion.php
+++ b/controleur/connexion.php
@@ -5,20 +5,28 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$pseudoCo = $_POST['pseudo_connect'] ?? '';
$passwordCo = $_POST['password_connect'] ?? '';
- // Vérification des identifiants
+ // Vérification des identifiants en utilisant la méthode checkCredentials()
$connexionModel = new Connexion();
- $userData = $connexionModel->check_Password($pseudoCo);
+ // Vérifier si l'utilisateur est bloqué
+ if ($connexionModel->isUserBlocked($pseudoCo)) {
+ // Afficher un message d'erreur indiquant que l'utilisateur est bloqué
+ require './vue/connexion.html';
+ displayBlockedMessage();
+ exit(); // Arrêter l'exécution du script
+ }
+
+ $userData = $connexionModel->check_Password($pseudoCo);
if ($userData && $connexionModel->checkCredentials($pseudoCo, $passwordCo)) {
// Les identifiants sont corrects, connecter l'utilisateur
- //require_once './vue/home.html';
- // displaySuccessMessage();
connectUser($userData);
} else {
+ // Enregistrer une tentative de connexion infructueuse
+ $connexionModel->recordFailedLoginAttempt($pseudoCo);
// Afficher un message d'erreur en cas de connexion échouée
require './vue/connexion.html';
displayErrorMessage();
- }
+ }
}
// Fonction pour connecter l'utilisateur
function connectUser($userData) {
@@ -52,31 +60,27 @@ function displayErrorMessage() {
});
';
}
-// Fonction pour afficher un message de succès
-function displaySuccessMessage() {
+// Fonction pour afficher un message de bloquage
+function displayBlockedMessage() {
echo '';
}
-?>
\ No newline at end of file
+?>
diff --git a/controleur/gestion.php b/controleur/gestion.php
index 4263727..548066c 100644
--- a/controleur/gestion.php
+++ b/controleur/gestion.php
@@ -1,64 +1,180 @@
getMessage()]);
}
+}
+// Formulaire pour les nouveaux véhicules
+if (!empty($_POST['plaque'])) {
+ try {
+ $plaque = $_POST['plaque'];
+ $marque = $_POST['marque'];
+ $modele = $_POST['modele'];
+ $annee = $_POST['annee'];
+
+ // Validation des champs du formulaire
+ if (empty($plaque) || strlen($plaque) < 7 || strlen($plaque) > 9) {
+ $errors[] = "L'immatriculation doit comporter entre 7 et 9 caractères.";
+ }
+
+ if (empty($marque) || strlen($marque) < 2 || strlen($marque) > 50) {
+ $errors[] = "La marque doit comporter entre 2 et 50 caractères.";
+ }
+
+ if (empty($modele) || strlen($modele) < 2 || strlen($modele) > 50) {
+ $errors[] = "Le modèle doit comporter entre 2 et 50 caractères.";
+ }
+
+ if (empty($annee) || !preg_match('/^\d{4}$/', $annee)) {
+ $errors[] = "L'année doit être un nombre de 4 chiffres.";
+ }
+
+ if (!get_checkPlaque()) {
+ $errors[] = "Votre immatriculation est déjà utilisée par un véhicule.";
+ }
+
if (!empty($_FILES['image']['size'])) {
- $extension_upload = strtolower(substr(strrchr($_FILES['image']['name'], '.'), 1));
+ // Vérification de la taille maximale du fichier (par exemple, 5 Mo)
+ $maxFileSize = 5 * 1024 * 1024; // 5 Mo en octets
+ if ($_FILES['image']['size'] > $maxFileSize) {
+ $errors[] = "La taille de l'image dépasse la limite autorisée de 5 Mo.";
+ }
+ // Vérification de l'extension du fichier
+ $extensions_valides = array('jpg', 'jpeg', 'gif', 'png');
+ $extension_upload = strtolower(pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION));
if (!in_array($extension_upload, $extensions_valides)) {
- $i++;
- $image_erreur3 = "Extension de l'image incorrecte";
+ $errors[] = "Extension de l'image incorrecte. Seules les extensions JPG, JPEG, GIF et PNG sont autorisées.";
+ }
+ // Vérification du type MIME du fichier
+ $allowedMimeTypes = array('image/jpeg', 'image/png', 'image/gif');
+ $fileMimeType = mime_content_type($_FILES['image']['tmp_name']);
+ if (!in_array($fileMimeType, $allowedMimeTypes)) {
+ $errors[] = "Type de fichier non pris en charge. Veuillez télécharger une image au format JPG, JPEG, GIF ou PNG.";
}
}
- if ($i == 0) {
- // Message de réussite
- echo '
- ';
- // Inclure à nouveau le formulaire pour permettre à l'utilisateur de ressaisir des valeurs
- post_RegistreCar();
- header("Location: gestion.php"); // Redirigez vers la page appropriée après la suppression
- exit();
- } else {
- // Affichage des erreurs
- $errorMessages = '';
- if ($plaque_erreur1) $errorMessages .= "$plaque_erreur1";
- if ($image_erreur3) $errorMessages .= "$image_erreur3";
- echo '
- ';
+ if (empty($errors)) {
+ // Enregistrement du véhicule
+ post_RegistreCar();
+ require_once './vue/gestion.html';
+ displayAddVehiculeSuccessMessage();
+ exit();
+ } else {
+ require_once './vue/gestion.html';
+ displayAddVehiculeErrorMessage($errors);
+ }
+ } catch (Exception $e) {
+ // Afficher les messages d'erreur
+ require_once './vue/gestion.html';
+ displayAddVehiculeErrorMessage(["Une erreur est survenue lors de l'enregistrement du véhicule."]);
}
}
-require './vue/gestion.html';
+// Fonction pour afficher un message de succès
+function displayDeleteVehiculeSuccessMessage() {
+ echo '';
+}
+// Fonction pour afficher un message d'erreur
+function displayAddVehiculeErrorMessage($errors) {
+ echo '';
+}
+// Fonction pour afficher un message de succès
+function displayAddVehiculeSuccessMessage() {
+ echo '';
+}
+require_once './vue/gestion.html';
?>
\ No newline at end of file
diff --git a/controleur/home.php b/controleur/home.php
index 732c083..fd220c4 100644
--- a/controleur/home.php
+++ b/controleur/home.php
@@ -1,12 +1,8 @@
lastInsertId(); // Assurez-vous d'avoir accès à $bdd ici
$_SESSION['privilege_session'] = 2;
}
+
// Traitement de l'inscription
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$errors = [];
- // On récupère les variables
- $extensions_valides = array('jpg', 'jpeg', 'gif', 'png');
- $pseudo = $_POST['pseudo'];
- $email = $_POST['email'];
- $localisation = $_POST['localisation'];
- $prenom = $_POST['prenom'];
- $nom = $_POST['nom'];
- $pass = md5($_POST['password']);
- $confirm = md5($_POST['confirm']);
- // Validation du pseudo
- if (!isPseudoAvailable($pseudo)) {
+ // Validation de la taille et de la présence des champs
+ $nom = trim($_POST['nom']);
+ $prenom = trim($_POST['prenom']);
+ $pseudo = trim($_POST['pseudo']);
+ $email = trim($_POST['email']);
+ $password = $_POST['password'];
+ $confirm = $_POST['confirm'];
+ $localisation = trim($_POST['localisation']);
+ $phone = trim($_POST['phone']);
+
+ if (empty($nom) || strlen($nom) < 3 || strlen($nom) > 25) {
+ $errors[] = "Le nom est requis et doit contenir entre 3 et 25 caractères.";
+ }
+
+ if (!preg_match('/^[A-Za-zÀ-ÖØ-öø-ÿ0-9 -]+$/', $nom)) {
+ $errors[] = "Le nom peut contenir uniquement des lettres, des chiffres, des tirets et des espaces.";
+ }
+
+ if (preg_match('/^\s+$/', $nom)) {
+ $errors[] = "Le nom ne peut pas être composé uniquement d'espaces.";
+ }
+
+ if (empty($prenom) || strlen($prenom) < 3 || strlen($prenom) > 25) {
+ $errors[] = "Le prénom est requis et doit contenir entre 3 et 25 caractères.";
+ }
+
+ if (!preg_match('/^[A-Za-zÀ-ÖØ-öø-ÿ0-9 -]+$/', $prenom)) {
+ $errors[] = "Le prénom peut contenir uniquement des lettres, des chiffres, des tirets et des espaces.";
+}
+
+ if (preg_match('/^\s+$/', $prenom)) {
+ $errors[] = "Le prénom ne peut pas être composé uniquement d'espaces.";
+ }
+
+ if (empty($pseudo) || strlen($pseudo) < 3 || strlen($pseudo) > 25) {
+ $errors[] = "Le pseudo est requis et doit contenir entre 3 et 25 caractères.";
+ }
+
+ if (!ctype_alnum($pseudo)) {
+ $errors[] = "Le pseudo ne doit contenir que des lettres alphabétiques ou des chiffres.";
+ }
+
+ if (!get_checkPseudo($pseudo)) {
$errors[] = "Votre pseudo est déjà utilisé par un membre.";
}
- // Validation du mot de passe
- if ($pass !== $confirm || empty($confirm) || empty($pass)) {
- $errors[] = "Votre mot de passe et la confirmation sont différents, ou sont vides.";
+
+ if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
+ $errors[] = "L'adresse e-mail est requise et doit être valide.";
}
- // Validation de l'email
- if (!isEmailAvailable($email)) {
+
+ if (!get_checkMail($email)) {
$errors[] = "Votre adresse email est déjà utilisée par un membre.";
}
- // Validation de l'avatar s'il est uploadé
+
+ if (empty($password) || strlen($password) < 6 || strlen($password) > 32) {
+ $errors[] = "Le mot de passe est requis et doit contenir entre 6 et 32 caractères.";
+ }
+
+ if (!preg_match('/^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*?&]).+$/', $password)) {
+ $errors[] = "Le mot de passe doit contenir au moins une lettre, un chiffre et un caractère spécial (@$!%*?&)";
+ }
+
+ if ($password !== $confirm) {
+ $errors[] = "Les mots de passe ne correspondent pas.";
+ }
+
+ // Gestion des espaces vides pour le numéro de téléphone
+ if (empty($phone) || strlen($phone) < 10 || strlen($phone) > 15) {
+ $errors[] = "Le numéro de téléphone est requis et doit contenir entre 10 et 15 caractères.";
+ }
+
+ if (preg_match('/^\s+$/', $phone)) {
+ $errors[] = "Le numéro de téléphone ne peut pas être composé uniquement d'espaces.";
+ }
+
+ if (!preg_match('/^\d+$/', $phone)) {
+ $errors[] = "Le numéro de téléphone ne doit contenir que des chiffres.";
+ }
+
+ if (empty($localisation) || strlen($localisation) < 6 || strlen($localisation) > 50) {
+ $errors[] = "L'adresse postale est requise et doit contenir entre 6 et 50 caractères.";
+ }
+
+ if (!preg_match('/^[A-Za-zÀ-ÖØ-öø-ÿ0-9 ]+$/', $localisation)) {
+ $errors[] = "L'adresse postale peut contenir uniquement des lettres, des chiffres et des espaces.";
+ }
+
+ if (preg_match('/^\s+$/', $localisation)) {
+ $errors[] = "L'adresse ne peut pas être composé uniquement d'espaces.";
+ }
+
if (!empty($_FILES['avatar']['size'])) {
- if (!isValidAvatarExtension($_FILES['avatar']['name'], $extensions_valides)) {
- $errors[] = "Extension de l'avatar incorrecte.";
+ // Vérification de la taille maximale du fichier (par exemple, 5 Mo)
+ $maxFileSize = 5 * 1024 * 1024; // 5 Mo en octets
+ if ($_FILES['avatar']['size'] > $maxFileSize) {
+ $errors[] = "La taille de l'avatar dépasse la limite autorisée de 5 Mo.";
+ }
+
+ // Vérification de l'extension du fichier
+ $extensions_valides = array('jpg', 'jpeg', 'gif', 'png');
+ $extension_upload = strtolower(pathinfo($_FILES['avatar']['name'], PATHINFO_EXTENSION));
+ if (!in_array($extension_upload, $extensions_valides)) {
+ $errors[] = "Extension de l'avatar incorrecte. Seules les extensions JPG, JPEG, GIF et PNG sont autorisées.";
+ }
+
+ // Vérification du type MIME du fichier
+ $allowedMimeTypes = array('image/jpeg', 'image/png', 'image/gif');
+ $fileMimeType = mime_content_type($_FILES['avatar']['tmp_name']);
+ if (!in_array($fileMimeType, $allowedMimeTypes)) {
+ $errors[] = "Type de fichier non pris en charge. Veuillez télécharger une image au format JPG, JPEG, GIF ou PNG.";
}
}
+
+require_once './vue/inscription.html';
if (empty($errors)) {
$userData = [
'pseudo' => $pseudo,
+ 'password' => $password,
'email' => $email,
- // Autres champs du formulaire
+ 'localisation' => $localisation,
+ 'prenom' => $prenom,
+ 'nom' => $nom,
+ 'phone' => $_POST['phone'],
+ 'avatar' => $_FILES['avatar']
];
-require_once './vue/inscription.html';
- inscriptionUser($userData);
- displayInscriptionSuccessMessage();
- exit;
+ inscriptionUser($userData);
+ displayInscriptionSuccessMessage();
+ exit;
}
}
+
// Affichage du formulaire d'inscription avec les éventuelles erreurs
require_once './vue/inscription.html';
if (!empty($errors)) {
displayInscriptionErrorMessage($errors);
}
+
// Fonction pour afficher un message d'erreur
function displayInscriptionErrorMessage($errors) {
echo '';
}
+
// Fonction pour afficher un message de succès
function displayInscriptionSuccessMessage() {
echo '';
}
-?>
\ No newline at end of file
+?>
diff --git a/controleur/profil.php b/controleur/profil.php
index 060f1d9..b839a57 100644
--- a/controleur/profil.php
+++ b/controleur/profil.php
@@ -1,22 +1,29 @@
Cette action est impossible
';
}
-function handleProfileModification(){
+
+function handleProfileModification() {
if (empty($_POST['sent'])) {
- // On commence par s'assurer que le membre est connecté
- // if ($id == 0) erreur(ERR_IS_NOT_CO);
- // Les infos du membre
- $data = get_MemberInfoId();
- require './vue/edit_profile_view.html';
+ $userData = get_MemberInfoId();
+ require_once './vue/edit_profile_view.html';
} else {
- $i = 0;
- $pass = /*md5*/($_POST['password']);
- $confirm = /*md5*/($_POST['confirm']);
+ // Collecter les données du formulaire
+ $id = (int)$_SESSION['id_session'];
+ $pseudo = $_SESSION['pseudo_session'];
+ $password = $_POST['password'];
+ $confirm = $_POST['confirm'];
$email = $_POST['email'];
$localisation = $_POST['localisation'];
$phone = $_POST['phone'];
- $pseudo = $_SESSION['pseudo_session'];
- $extensions_valides = array('jpg', 'jpeg', 'gif', 'png');
- // Vérification des champs du formulaire
- if ($pass != $confirm || empty($confirm) || empty($pass)) {
- $mdp_erreur = "Votre mot de passe et la confirmation sont différents ou sont vides";
- $i++;
+ $avatar = $_FILES['avatar'];
+ $errors = [];
+
+ // Validation de l'email
+ if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
+ $errors[] = "L'adresse e-mail est requise et doit être valide.";
}
+
+ if (!get_checkMyMail($email, $id)) {
+ $errors[] = "Votre adresse email est déjà utilisée par un membre.";
+ }
+
+ // Validation du mot de passe
+ if (empty($password) || strlen($password) < 6 || strlen($password) > 32) {
+ $errors[] = "Le mot de passe est requis et doit contenir entre 6 et 32 caractères.";
+ }
+
+ if (!preg_match('/^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*?&]).+$/', $password)) {
+ $errors[] = "Le mot de passe doit contenir au moins une lettre, un chiffre et un caractère spécial (@$!%*?&)";
+ }
+
+ if ($password !== $confirm) {
+ $errors[] = "Les mots de passe ne correspondent pas.";
+ }
+
+ // Validation du numéro de téléphone
+ if (empty($phone) || strlen($phone) < 10 || strlen($phone) > 15) {
+ $errors[] = "Le numéro de téléphone est requis et doit contenir entre 10 et 15 caractères.";
+ }
+
+ if (preg_match('/^\s+$/', $phone)) {
+ $errors[] = "Le numéro de téléphone ne peut pas être composé uniquement d'espaces.";
+ }
+
+ if (!preg_match('/^\d+$/', $phone)) {
+ $errors[] = "Le numéro de téléphone ne doit contenir que des chiffres.";
+ }
+
+ // Validation de l'adresse postale
+ if (empty($localisation) || strlen($localisation) < 6 || strlen($localisation) > 50) {
+ $errors[] = "L'adresse postale est requise et doit contenir entre 6 et 50 caractères.";
+ }
+
+ if (!preg_match('/^[A-Za-zÀ-ÖØ-öø-ÿ0-9 ]+$/', $localisation)) {
+ $errors[] = "L'adresse postale peut contenir uniquement des lettres, des chiffres et des espaces.";
+ }
+
+ if (preg_match('/^\s+$/', $localisation)) {
+ $errors[] = "L'adresse ne peut pas être composée uniquement d'espaces.";
+ }
+
+ // Validation de l'avatar
if (!empty($_FILES['avatar']['size'])) {
- $extension_upload = strtolower(substr(strrchr($_FILES['avatar']['name'], '.'), 1));
+ $maxFileSize = 5 * 1024 * 1024; // 5 Mo en octets
+ if ($_FILES['avatar']['size'] > $maxFileSize) {
+ $errors[] = "La taille de l'avatar dépasse la limite autorisée de 5 Mo.";
+ }
+
+ $extensions_valides = ['jpg', 'jpeg', 'gif', 'png'];
+ $extension_upload = strtolower(pathinfo($_FILES['avatar']['name'], PATHINFO_EXTENSION));
if (!in_array($extension_upload, $extensions_valides)) {
- $i++;
- $avatar_erreur3 = "Extension de l'avatar incorrecte";
+ $errors[] = "Extension de l'avatar incorrecte. Seules les extensions JPG, JPEG, GIF et PNG sont autorisées.";
+ }
+
+ $allowedMimeTypes = ['image/jpeg', 'image/png', 'image/gif'];
+ $fileMimeType = mime_content_type($_FILES['avatar']['tmp_name']);
+ if (!in_array($fileMimeType, $allowedMimeTypes)) {
+ $errors[] = "Type de fichier non pris en charge. Veuillez télécharger une image au format JPG, JPEG, GIF ou PNG.";
}
}
- if ($i == 0) {
+
+ if (empty($errors)) {
if (isset($_POST['delete'])) {
post_RemoveAvatar($pseudo);
}
- // On modifie la table
- post_UpdateProfile($pseudo, $pass, $email, $localisation, $phone);
- $data = get_MemberInfoId(); // Récupérer les informations mises à jour
+ post_UpdateProfile($_SESSION['id_session'], $pseudo, $password, $email, $localisation, $phone, $avatar);
+ $userData = get_MemberInfoId(); // Récupérer les informations mises à jour
require_once './vue/edit_profile_view.html';
displayModificationProfilSuccessMessage();
- exit;
+ exit();
} else {
- $data = get_MemberInfoId(); // Récupérer les informations mises à jour
- require_once './vue/edit_profile_view.html';
- displayModificationProfilErrorMessage($i, $avatar_erreur3 ?? null, $mdp_erreur ?? null);
+ $userData = get_MemberInfoId(); // Récupérer les informations pour afficher les erreurs
+ require_once './vue/edit_profile_view.html';
+ displayModificationProfilErrorMessage($errors);
}
}
}
-// Fonction pour afficher un message de succès
+
+// Fonction pour afficher un message de succès lors de la modification du profil
function displayModificationProfilSuccessMessage() {
echo '';
}
-function displayModificationProfilErrorMessage($i, $avatar_erreur3 = null, $mdp_erreur = null) {
+
+// Fonction pour afficher un message d'erreur lors de la modification du profil
+function displayModificationProfilErrorMessage($errors) {
echo '';
}
+
+// Fonction pour afficher un message de succès lors de la suppression du profil
function displayDeleteProfilSuccessMessage() {
echo '';
}
-?>
\ No newline at end of file
+?>
diff --git a/controleur/vehicule.php b/controleur/vehicule.php
deleted file mode 100644
index a83f69e..0000000
--- a/controleur/vehicule.php
+++ /dev/null
@@ -1,61 +0,0 @@
- 9) {
- $plaque_erreur2 = "Votre plaque est soit trop grande, soit trop petite";
- $i++;
- }
- if (!empty($_FILES['image']['size'])) {
- $extension_upload = strtolower(substr(strrchr($_FILES['image']['name'], '.'), 1));
- if (!in_array($extension_upload, $extensions_valides)) {
- $i++;
- $image_erreur3 = "Extension de l'image incorrecte";
- }
- }
- if ($i == 0) {
- // Affichage du message de réussite
- echo '
-
-
-
-
Ajout du véhicule terminé
- Le véhicule ' . stripslashes(htmlspecialchars($_POST['plaque'])) . ' a été ajouté au véhicule de la compagnie
-
-
-
';
- // Inclure à nouveau le formulaire pour permettre à l'utilisateur de ressaisir des valeurs
- post_RegistreCars();
- } else {
- // Affichage des erreurs et lien pour retourner au formulaire
- echo '
-
-
Ajout du véhicule interrompu
-
' . $i . ' erreurs se sont produites lors de l\'ajout du véhicule
-
';
- if ($plaque_erreur1) echo "$plaque_erreur1
";
- if ($plaque_erreur2) echo "$plaque_erreur2
";
- if ($image_erreur3) echo "$image_erreur3
";
- echo '
-
-
';
- }
-}
-require './vue/vehicule.html';
-?>
\ No newline at end of file
diff --git a/images/avatars/Thumbs.db b/images/avatars/Thumbs.db
index 808e96a..922d07e 100644
Binary files a/images/avatars/Thumbs.db and b/images/avatars/Thumbs.db differ
diff --git a/images/avatars/sa/Thumbs.db b/images/avatars/sa/Thumbs.db
index 1928a33..ad95c7d 100644
Binary files a/images/avatars/sa/Thumbs.db and b/images/avatars/sa/Thumbs.db differ
diff --git a/images/avatars/sa/img_user.jpg b/images/avatars/sa/img_user.jpg
index 9ee0e75..0414d72 100644
Binary files a/images/avatars/sa/img_user.jpg and b/images/avatars/sa/img_user.jpg differ
diff --git a/images/avatars/utilisateur1/Thumbs.db b/images/avatars/utilisateur1/Thumbs.db
index d9aa91a..bcced04 100644
Binary files a/images/avatars/utilisateur1/Thumbs.db and b/images/avatars/utilisateur1/Thumbs.db differ
diff --git a/images/avatars/utilisateur10/Thumbs.db b/images/avatars/utilisateur10/Thumbs.db
index 674f88e..0770af8 100644
Binary files a/images/avatars/utilisateur10/Thumbs.db and b/images/avatars/utilisateur10/Thumbs.db differ
diff --git a/images/avatars/utilisateur11/Thumbs.db b/images/avatars/utilisateur11/Thumbs.db
index 61b9c2f..a046323 100644
Binary files a/images/avatars/utilisateur11/Thumbs.db and b/images/avatars/utilisateur11/Thumbs.db differ
diff --git a/images/avatars/utilisateur12/Thumbs.db b/images/avatars/utilisateur12/Thumbs.db
index 882d134..e1e691b 100644
Binary files a/images/avatars/utilisateur12/Thumbs.db and b/images/avatars/utilisateur12/Thumbs.db differ
diff --git a/images/avatars/utilisateur13/Thumbs.db b/images/avatars/utilisateur13/Thumbs.db
index 9667c81..b87154a 100644
Binary files a/images/avatars/utilisateur13/Thumbs.db and b/images/avatars/utilisateur13/Thumbs.db differ
diff --git a/images/avatars/utilisateur14/Thumbs.db b/images/avatars/utilisateur14/Thumbs.db
index 6d92e56..2992ee2 100644
Binary files a/images/avatars/utilisateur14/Thumbs.db and b/images/avatars/utilisateur14/Thumbs.db differ
diff --git a/images/avatars/utilisateur15/Thumbs.db b/images/avatars/utilisateur15/Thumbs.db
index 4900d56..50a5bbc 100644
Binary files a/images/avatars/utilisateur15/Thumbs.db and b/images/avatars/utilisateur15/Thumbs.db differ
diff --git a/images/avatars/utilisateur16/Thumbs.db b/images/avatars/utilisateur16/Thumbs.db
index 47950e4..e3b6bd7 100644
Binary files a/images/avatars/utilisateur16/Thumbs.db and b/images/avatars/utilisateur16/Thumbs.db differ
diff --git a/images/avatars/utilisateur17/Thumbs.db b/images/avatars/utilisateur17/Thumbs.db
index 0958b2b..9e91f48 100644
Binary files a/images/avatars/utilisateur17/Thumbs.db and b/images/avatars/utilisateur17/Thumbs.db differ
diff --git a/images/avatars/utilisateur18/Thumbs.db b/images/avatars/utilisateur18/Thumbs.db
index 5b167d3..e5624bc 100644
Binary files a/images/avatars/utilisateur18/Thumbs.db and b/images/avatars/utilisateur18/Thumbs.db differ
diff --git a/images/avatars/utilisateur19/Thumbs.db b/images/avatars/utilisateur19/Thumbs.db
index 5df19be..5df09cc 100644
Binary files a/images/avatars/utilisateur19/Thumbs.db and b/images/avatars/utilisateur19/Thumbs.db differ
diff --git a/images/avatars/utilisateur2/Thumbs.db b/images/avatars/utilisateur2/Thumbs.db
index 30157de..7683058 100644
Binary files a/images/avatars/utilisateur2/Thumbs.db and b/images/avatars/utilisateur2/Thumbs.db differ
diff --git a/images/avatars/utilisateur20/Thumbs.db b/images/avatars/utilisateur20/Thumbs.db
index e60bc94..59c777a 100644
Binary files a/images/avatars/utilisateur20/Thumbs.db and b/images/avatars/utilisateur20/Thumbs.db differ
diff --git a/images/avatars/utilisateur3/Thumbs.db b/images/avatars/utilisateur3/Thumbs.db
index b5ac4d2..c7b5211 100644
Binary files a/images/avatars/utilisateur3/Thumbs.db and b/images/avatars/utilisateur3/Thumbs.db differ
diff --git a/images/avatars/utilisateur4/Thumbs.db b/images/avatars/utilisateur4/Thumbs.db
index 2ecf2a9..725578f 100644
Binary files a/images/avatars/utilisateur4/Thumbs.db and b/images/avatars/utilisateur4/Thumbs.db differ
diff --git a/images/avatars/utilisateur5/Thumbs.db b/images/avatars/utilisateur5/Thumbs.db
index b9a6cb2..cbc3171 100644
Binary files a/images/avatars/utilisateur5/Thumbs.db and b/images/avatars/utilisateur5/Thumbs.db differ
diff --git a/images/avatars/utilisateur6/Thumbs.db b/images/avatars/utilisateur6/Thumbs.db
index 0506850..05927f6 100644
Binary files a/images/avatars/utilisateur6/Thumbs.db and b/images/avatars/utilisateur6/Thumbs.db differ
diff --git a/images/avatars/utilisateur7/Thumbs.db b/images/avatars/utilisateur7/Thumbs.db
index 426951c..cbd0afb 100644
Binary files a/images/avatars/utilisateur7/Thumbs.db and b/images/avatars/utilisateur7/Thumbs.db differ
diff --git a/images/avatars/utilisateur8/Thumbs.db b/images/avatars/utilisateur8/Thumbs.db
index aeca80e..59ad15f 100644
Binary files a/images/avatars/utilisateur8/Thumbs.db and b/images/avatars/utilisateur8/Thumbs.db differ
diff --git a/images/avatars/utilisateur9/Thumbs.db b/images/avatars/utilisateur9/Thumbs.db
index 5ffeb4f..ec32135 100644
Binary files a/images/avatars/utilisateur9/Thumbs.db and b/images/avatars/utilisateur9/Thumbs.db differ
diff --git a/images/vehicules/AA123AA/Thumbs.db b/images/vehicules/AA123AA/Thumbs.db
index 84bb1c7..2fa077f 100644
Binary files a/images/vehicules/AA123AA/Thumbs.db and b/images/vehicules/AA123AA/Thumbs.db differ
diff --git a/images/vehicules/AA123AA/img_vehicule.png b/images/vehicules/AA123AA/img_vehicule.png
new file mode 100644
index 0000000..d9d0b4c
Binary files /dev/null and b/images/vehicules/AA123AA/img_vehicule.png differ
diff --git a/images/vehicules/BB456BB/Thumbs.db b/images/vehicules/BB456BB/Thumbs.db
index a8e009d..aaf3132 100644
Binary files a/images/vehicules/BB456BB/Thumbs.db and b/images/vehicules/BB456BB/Thumbs.db differ
diff --git a/images/vehicules/BB456BB/img_vehicule.png b/images/vehicules/BB456BB/img_vehicule.png
new file mode 100644
index 0000000..e3e3fe4
Binary files /dev/null and b/images/vehicules/BB456BB/img_vehicule.png differ
diff --git a/images/vehicules/BB456BB/img_voiture.png b/images/vehicules/BB456BB/img_voiture.png
deleted file mode 100644
index 19d3437..0000000
Binary files a/images/vehicules/BB456BB/img_voiture.png and /dev/null differ
diff --git a/images/vehicules/CC789CC/Thumbs.db b/images/vehicules/CC789CC/Thumbs.db
index 1afd15f..9a48a33 100644
Binary files a/images/vehicules/CC789CC/Thumbs.db and b/images/vehicules/CC789CC/Thumbs.db differ
diff --git a/images/vehicules/CC789CC/img_vehicule.png b/images/vehicules/CC789CC/img_vehicule.png
new file mode 100644
index 0000000..d6d3837
Binary files /dev/null and b/images/vehicules/CC789CC/img_vehicule.png differ
diff --git a/images/vehicules/CC789CC/img_voiture.png b/images/vehicules/CC789CC/img_voiture.png
deleted file mode 100644
index 19d3437..0000000
Binary files a/images/vehicules/CC789CC/img_voiture.png and /dev/null differ
diff --git a/images/vehicules/DD012DD/Thumbs.db b/images/vehicules/DD012DD/Thumbs.db
index db29b16..5ccdea0 100644
Binary files a/images/vehicules/DD012DD/Thumbs.db and b/images/vehicules/DD012DD/Thumbs.db differ
diff --git a/images/vehicules/DD012DD/img_vehicule.png b/images/vehicules/DD012DD/img_vehicule.png
new file mode 100644
index 0000000..82d9acc
Binary files /dev/null and b/images/vehicules/DD012DD/img_vehicule.png differ
diff --git a/images/vehicules/DD012DD/img_voiture.png b/images/vehicules/DD012DD/img_voiture.png
deleted file mode 100644
index 19d3437..0000000
Binary files a/images/vehicules/DD012DD/img_voiture.png and /dev/null differ
diff --git a/images/vehicules/EE345EE/Thumbs.db b/images/vehicules/EE345EE/Thumbs.db
index eb042d7..7afc808 100644
Binary files a/images/vehicules/EE345EE/Thumbs.db and b/images/vehicules/EE345EE/Thumbs.db differ
diff --git a/images/vehicules/EE345EE/img_vehicule.png b/images/vehicules/EE345EE/img_vehicule.png
new file mode 100644
index 0000000..c6011f6
Binary files /dev/null and b/images/vehicules/EE345EE/img_vehicule.png differ
diff --git a/images/vehicules/EE345EE/img_voiture.png b/images/vehicules/EE345EE/img_voiture.png
deleted file mode 100644
index 19d3437..0000000
Binary files a/images/vehicules/EE345EE/img_voiture.png and /dev/null differ
diff --git a/images/vehicules/FF678FF/Thumbs.db b/images/vehicules/FF678FF/Thumbs.db
index 0a5ec24..3f8fbde 100644
Binary files a/images/vehicules/FF678FF/Thumbs.db and b/images/vehicules/FF678FF/Thumbs.db differ
diff --git a/images/vehicules/FF678FF/img_vehicule.png b/images/vehicules/FF678FF/img_vehicule.png
new file mode 100644
index 0000000..842e167
Binary files /dev/null and b/images/vehicules/FF678FF/img_vehicule.png differ
diff --git a/images/vehicules/FF678FF/img_voiture.png b/images/vehicules/FF678FF/img_voiture.png
deleted file mode 100644
index 19d3437..0000000
Binary files a/images/vehicules/FF678FF/img_voiture.png and /dev/null differ
diff --git a/images/vehicules/GG901GG/Thumbs.db b/images/vehicules/GG901GG/Thumbs.db
index 4fc4dd4..ee8f4ea 100644
Binary files a/images/vehicules/GG901GG/Thumbs.db and b/images/vehicules/GG901GG/Thumbs.db differ
diff --git a/images/vehicules/GG901GG/img_vehicule.png b/images/vehicules/GG901GG/img_vehicule.png
new file mode 100644
index 0000000..bce3aa2
Binary files /dev/null and b/images/vehicules/GG901GG/img_vehicule.png differ
diff --git a/images/vehicules/GG901GG/img_voiture.png b/images/vehicules/GG901GG/img_voiture.png
deleted file mode 100644
index 19d3437..0000000
Binary files a/images/vehicules/GG901GG/img_voiture.png and /dev/null differ
diff --git a/images/vehicules/GH209RH/img_voiture.png b/images/vehicules/GH209RH/img_vehicule.png
similarity index 100%
rename from images/vehicules/GH209RH/img_voiture.png
rename to images/vehicules/GH209RH/img_vehicule.png
diff --git a/images/vehicules/HH234HH/Thumbs.db b/images/vehicules/HH234HH/Thumbs.db
index bc2288e..4731355 100644
Binary files a/images/vehicules/HH234HH/Thumbs.db and b/images/vehicules/HH234HH/Thumbs.db differ
diff --git a/images/vehicules/HH234HH/img_vehicule.png b/images/vehicules/HH234HH/img_vehicule.png
new file mode 100644
index 0000000..eac192b
Binary files /dev/null and b/images/vehicules/HH234HH/img_vehicule.png differ
diff --git a/images/vehicules/HH234HH/img_voiture.png b/images/vehicules/HH234HH/img_voiture.png
deleted file mode 100644
index 19d3437..0000000
Binary files a/images/vehicules/HH234HH/img_voiture.png and /dev/null differ
diff --git a/images/vehicules/II567II/Thumbs.db b/images/vehicules/II567II/Thumbs.db
index fd9317b..9b693bc 100644
Binary files a/images/vehicules/II567II/Thumbs.db and b/images/vehicules/II567II/Thumbs.db differ
diff --git a/images/vehicules/II567II/img_vehicule.png b/images/vehicules/II567II/img_vehicule.png
new file mode 100644
index 0000000..bd860ae
Binary files /dev/null and b/images/vehicules/II567II/img_vehicule.png differ
diff --git a/images/vehicules/II567II/img_voiture.png b/images/vehicules/II567II/img_voiture.png
deleted file mode 100644
index 19d3437..0000000
Binary files a/images/vehicules/II567II/img_voiture.png and /dev/null differ
diff --git a/images/vehicules/IO334PO/img_voiture.png b/images/vehicules/IO334PO/img_vehicule.png
similarity index 100%
rename from images/vehicules/IO334PO/img_voiture.png
rename to images/vehicules/IO334PO/img_vehicule.png
diff --git a/images/vehicules/JJ890JJ/Thumbs.db b/images/vehicules/JJ890JJ/Thumbs.db
index 797856f..aa993cf 100644
Binary files a/images/vehicules/JJ890JJ/Thumbs.db and b/images/vehicules/JJ890JJ/Thumbs.db differ
diff --git a/images/vehicules/JJ890JJ/img_vehicule.png b/images/vehicules/JJ890JJ/img_vehicule.png
new file mode 100644
index 0000000..ffe078f
Binary files /dev/null and b/images/vehicules/JJ890JJ/img_vehicule.png differ
diff --git a/images/vehicules/JJ890JJ/img_voiture.png b/images/vehicules/JJ890JJ/img_voiture.png
deleted file mode 100644
index 19d3437..0000000
Binary files a/images/vehicules/JJ890JJ/img_voiture.png and /dev/null differ
diff --git a/images/vehicules/KK123KK/Thumbs.db b/images/vehicules/KK123KK/Thumbs.db
index f0fee27..9fad2f8 100644
Binary files a/images/vehicules/KK123KK/Thumbs.db and b/images/vehicules/KK123KK/Thumbs.db differ
diff --git a/images/vehicules/KK123KK/img_vehicule.png b/images/vehicules/KK123KK/img_vehicule.png
new file mode 100644
index 0000000..0958e38
Binary files /dev/null and b/images/vehicules/KK123KK/img_vehicule.png differ
diff --git a/images/vehicules/KK123KK/img_voiture.png b/images/vehicules/KK123KK/img_voiture.png
deleted file mode 100644
index 19d3437..0000000
Binary files a/images/vehicules/KK123KK/img_voiture.png and /dev/null differ
diff --git a/images/vehicules/LL456LL/Thumbs.db b/images/vehicules/LL456LL/Thumbs.db
index 20e86d1..82c627d 100644
Binary files a/images/vehicules/LL456LL/Thumbs.db and b/images/vehicules/LL456LL/Thumbs.db differ
diff --git a/images/vehicules/LL456LL/img_vehicule.png b/images/vehicules/LL456LL/img_vehicule.png
new file mode 100644
index 0000000..a87a5b9
Binary files /dev/null and b/images/vehicules/LL456LL/img_vehicule.png differ
diff --git a/images/vehicules/LL456LL/img_voiture.png b/images/vehicules/LL456LL/img_voiture.png
deleted file mode 100644
index 19d3437..0000000
Binary files a/images/vehicules/LL456LL/img_voiture.png and /dev/null differ
diff --git a/images/vehicules/MM789MM/Thumbs.db b/images/vehicules/MM789MM/Thumbs.db
index 9b5b0bd..5342216 100644
Binary files a/images/vehicules/MM789MM/Thumbs.db and b/images/vehicules/MM789MM/Thumbs.db differ
diff --git a/images/vehicules/MM789MM/img_vehicule.png b/images/vehicules/MM789MM/img_vehicule.png
new file mode 100644
index 0000000..9257d37
Binary files /dev/null and b/images/vehicules/MM789MM/img_vehicule.png differ
diff --git a/images/vehicules/MM789MM/img_voiture.png b/images/vehicules/MM789MM/img_voiture.png
deleted file mode 100644
index 19d3437..0000000
Binary files a/images/vehicules/MM789MM/img_voiture.png and /dev/null differ
diff --git a/images/vehicules/NN012NN/Thumbs.db b/images/vehicules/NN012NN/Thumbs.db
index 232ef70..526628e 100644
Binary files a/images/vehicules/NN012NN/Thumbs.db and b/images/vehicules/NN012NN/Thumbs.db differ
diff --git a/images/vehicules/NN012NN/img_vehicule.png b/images/vehicules/NN012NN/img_vehicule.png
new file mode 100644
index 0000000..564d451
Binary files /dev/null and b/images/vehicules/NN012NN/img_vehicule.png differ
diff --git a/images/vehicules/NN012NN/img_voiture.png b/images/vehicules/NN012NN/img_voiture.png
deleted file mode 100644
index 19d3437..0000000
Binary files a/images/vehicules/NN012NN/img_voiture.png and /dev/null differ
diff --git a/images/vehicules/OO345OO/Thumbs.db b/images/vehicules/OO345OO/Thumbs.db
index 05e4e8e..79e4b44 100644
Binary files a/images/vehicules/OO345OO/Thumbs.db and b/images/vehicules/OO345OO/Thumbs.db differ
diff --git a/images/vehicules/OO345OO/img_vehicule.png b/images/vehicules/OO345OO/img_vehicule.png
new file mode 100644
index 0000000..dc8b2de
Binary files /dev/null and b/images/vehicules/OO345OO/img_vehicule.png differ
diff --git a/images/vehicules/OO345OO/img_voiture.png b/images/vehicules/OO345OO/img_voiture.png
deleted file mode 100644
index 19d3437..0000000
Binary files a/images/vehicules/OO345OO/img_voiture.png and /dev/null differ
diff --git a/images/vehicules/PH940OP/img_voiture.png b/images/vehicules/PH940OP/img_vehicule.png
similarity index 100%
rename from images/vehicules/PH940OP/img_voiture.png
rename to images/vehicules/PH940OP/img_vehicule.png
diff --git a/images/vehicules/PP678PP/Thumbs.db b/images/vehicules/PP678PP/Thumbs.db
index 0c5ae7b..be8874b 100644
Binary files a/images/vehicules/PP678PP/Thumbs.db and b/images/vehicules/PP678PP/Thumbs.db differ
diff --git a/images/vehicules/PP678PP/img_vehicule.png b/images/vehicules/PP678PP/img_vehicule.png
new file mode 100644
index 0000000..b095a8c
Binary files /dev/null and b/images/vehicules/PP678PP/img_vehicule.png differ
diff --git a/images/vehicules/PP678PP/img_voiture.png b/images/vehicules/PP678PP/img_voiture.png
deleted file mode 100644
index 19d3437..0000000
Binary files a/images/vehicules/PP678PP/img_voiture.png and /dev/null differ
diff --git a/images/vehicules/QQ901QQ/Thumbs.db b/images/vehicules/QQ901QQ/Thumbs.db
index 7c8970d..6465e21 100644
Binary files a/images/vehicules/QQ901QQ/Thumbs.db and b/images/vehicules/QQ901QQ/Thumbs.db differ
diff --git a/images/vehicules/QQ901QQ/img_vehicule.png b/images/vehicules/QQ901QQ/img_vehicule.png
new file mode 100644
index 0000000..0776f7d
Binary files /dev/null and b/images/vehicules/QQ901QQ/img_vehicule.png differ
diff --git a/images/vehicules/QQ901QQ/img_voiture.png b/images/vehicules/QQ901QQ/img_voiture.png
deleted file mode 100644
index 19d3437..0000000
Binary files a/images/vehicules/QQ901QQ/img_voiture.png and /dev/null differ
diff --git a/images/vehicules/RR234RR/Thumbs.db b/images/vehicules/RR234RR/Thumbs.db
index 7a2d706..5bdde45 100644
Binary files a/images/vehicules/RR234RR/Thumbs.db and b/images/vehicules/RR234RR/Thumbs.db differ
diff --git a/images/vehicules/RR234RR/img_vehicule.png b/images/vehicules/RR234RR/img_vehicule.png
new file mode 100644
index 0000000..21a61f9
Binary files /dev/null and b/images/vehicules/RR234RR/img_vehicule.png differ
diff --git a/images/vehicules/RR234RR/img_voiture.png b/images/vehicules/RR234RR/img_voiture.png
deleted file mode 100644
index 19d3437..0000000
Binary files a/images/vehicules/RR234RR/img_voiture.png and /dev/null differ
diff --git a/images/vehicules/SS567SS/Thumbs.db b/images/vehicules/SS567SS/Thumbs.db
index 4f063c5..5764545 100644
Binary files a/images/vehicules/SS567SS/Thumbs.db and b/images/vehicules/SS567SS/Thumbs.db differ
diff --git a/images/vehicules/SS567SS/img_vehicule.png b/images/vehicules/SS567SS/img_vehicule.png
new file mode 100644
index 0000000..1c2a54d
Binary files /dev/null and b/images/vehicules/SS567SS/img_vehicule.png differ
diff --git a/images/vehicules/SS567SS/img_voiture.png b/images/vehicules/SS567SS/img_voiture.png
deleted file mode 100644
index 19d3437..0000000
Binary files a/images/vehicules/SS567SS/img_voiture.png and /dev/null differ
diff --git a/images/vehicules/TT890TT/Thumbs.db b/images/vehicules/TT890TT/Thumbs.db
index 60fe5d1..a837e82 100644
Binary files a/images/vehicules/TT890TT/Thumbs.db and b/images/vehicules/TT890TT/Thumbs.db differ
diff --git a/images/vehicules/TT890TT/img_vehicule.png b/images/vehicules/TT890TT/img_vehicule.png
new file mode 100644
index 0000000..03f58c3
Binary files /dev/null and b/images/vehicules/TT890TT/img_vehicule.png differ
diff --git a/images/vehicules/TT890TT/img_voiture.png b/images/vehicules/TT890TT/img_voiture.png
deleted file mode 100644
index 19d3437..0000000
Binary files a/images/vehicules/TT890TT/img_voiture.png and /dev/null differ
diff --git a/images/vehicules/Thumbs.db b/images/vehicules/Thumbs.db
index b09ff0a..d24d5a2 100644
Binary files a/images/vehicules/Thumbs.db and b/images/vehicules/Thumbs.db differ
diff --git a/images/vehicules/WSD754YH/img_voiture.png b/images/vehicules/WSD754YH/img_vehicule.png
similarity index 100%
rename from images/vehicules/WSD754YH/img_voiture.png
rename to images/vehicules/WSD754YH/img_vehicule.png
diff --git a/images/vehicules/XD738UJ/img_voiture.png b/images/vehicules/XD738UJ/img_vehicule.png
similarity index 100%
rename from images/vehicules/XD738UJ/img_voiture.png
rename to images/vehicules/XD738UJ/img_vehicule.png
diff --git a/images/vehicules/AA123AA/img_voiture.png b/images/vehicules/img_vehicule.png
similarity index 100%
rename from images/vehicules/AA123AA/img_voiture.png
rename to images/vehicules/img_vehicule.png
diff --git a/images/vehicules/img_voiture.png b/images/vehicules/img_voiture.png
deleted file mode 100644
index 19d3437..0000000
Binary files a/images/vehicules/img_voiture.png and /dev/null differ
diff --git a/images/vehicules/voiture.png b/images/vehicules/vehicule.png
similarity index 100%
rename from images/vehicules/voiture.png
rename to images/vehicules/vehicule.png
diff --git a/js/script.js b/js/script.js
index 83bad87..6f38139 100644
--- a/js/script.js
+++ b/js/script.js
@@ -41,11 +41,17 @@ function getCookie(name) {
return null;
}
-function acceptCookies() {
+function accepterCookies() {
document.cookie = "cookieConsent=true; max-age=" + 60*60*24*365 + "; path=/";
document.getElementById("cookieConsent").classList.add("d-none");
}
+function refuserCookies() {
+ document.cookie =
+ "cookieConsent=false; max-age=" + 60*60*24*365 + "; path=/";
+ document.getElementById("cookieConsent").classList.add("d-none");
+}
+
window.onload = function() {
if (getCookie("cookieConsent") !== "true") {
document.getElementById("cookieConsent").classList.remove("d-none");
diff --git a/js/script_calendar.js b/js/script_calendar.js
index 7672bfe..2c02f18 100644
--- a/js/script_calendar.js
+++ b/js/script_calendar.js
@@ -1,18 +1,58 @@
-//# AFFICHE MY EVENT
-var calendarMyEvents = $("#calendar-my-events").fullCalendar({
- events: "./modele/event/fetch-my-events.php",
- displayEventTime: false,
- eventRender: function (event, element, view) {
+$(document).ready(function () {
+ // Initialisation du calendrier pour les événements de l'utilisateur actuel
+ var calendarMyEvents = $("#calendar-my-events").fullCalendar({
+ events: "./modele/event/fetch-my-events.php",
+ displayEventTime: false,
+ selectable: true,
+ selectHelper: true,
+ editable: false,
+ eventRender: eventRenderFunction,
+ eventClick: eventClickFunction,
+ eventMouseover: eventMouseoverFunction,
+ eventMouseout: eventMouseoutFunction,
+ });
+
+ // Initialisation du calendrier pour tous les événements
+ var calendarAllEvents = $("#calendar-all-events").fullCalendar({
+ events: "./modele/event/fetch-all-events.php",
+ displayEventTime: false,
+ selectable: true,
+ selectHelper: true,
+ editable: false,
+ eventRender: eventRenderFunction,
+ eventClick: eventClickFunction,
+ eventMouseover: eventMouseoverFunction,
+ eventMouseout: eventMouseoutFunction,
+ });
+
+ // Fonction pour rendre les événements
+ function eventRenderFunction(event, element, view) {
if (event.allDay === "true") {
event.allDay = true;
} else {
event.allDay = false;
}
- },
- selectable: true,
- selectHelper: true,
- editable: false,
- eventClick: function (event) {
+ element.bind("contextmenu", function (e) {
+ e.preventDefault(); // Empêche le menu contextuel par défaut de s'afficher
+ var deleteMsg = confirm("Voulez-vous vraiment supprimer la réservation?");
+ if (deleteMsg) {
+ $.ajax({
+ type: "POST",
+ url: "./modele/event/delete-event.php",
+ data: "&id=" + event.id,
+ success: function (response) {
+ if (parseInt(response) > 0) {
+ $(this).fullCalendar("removeEvents", event.id);
+ displayMessage("Réservation supprimée avec succès");
+ }
+ },
+ });
+ }
+ });
+ }
+
+ // Fonction pour gérer le clic sur un événement
+ function eventClickFunction(event) {
// Afficher une pop-up avec les détails de l'événement
alert(
event.title +
@@ -28,194 +68,137 @@ var calendarMyEvents = $("#calendar-my-events").fullCalendar({
" --> " +
event.end.format("dddd DD MMMM YYYY HH:mm")
);
- },
- eventRender: function (event, element, view) {
- element.bind("contextmenu", function (e) {
- e.preventDefault(); // Empêche le menu contextuel par défaut de s'afficher
- var deleteMsg = confirm("Voulez-vous vraiment supprimer la réservation?");
- if (deleteMsg) {
- $.ajax({
- type: "POST",
- url: "./modele/event/delete-event.php",
- data: "&id=" + event.id,
- success: function (response) {
- if (parseInt(response) > 0) {
- $("#calendar-my-events").fullCalendar("removeEvents", event.id);
- displayMessage("Réservation supprimée avec succès");
- }
- },
- });
- }
- });
- },
- eventMouseover: function (event, jsEvent, view) {
+ }
+
+ // Fonction pour gérer le survol d'un événement
+ function eventMouseoverFunction(event, jsEvent, view) {
// Change la forme du curseur lorsque vous survolez l'événement
$(this).css("cursor", "pointer");
- },
- eventMouseout: function (event, jsEvent, view) {
+ }
+
+ // Fonction pour gérer la sortie du survol d'un événement
+ function eventMouseoutFunction(event, jsEvent, view) {
// Réinitialise la forme du curseur lorsque vous ne survolez plus l'événement
$(this).css("cursor", "auto");
- },
-});
+ }
-//# AFFICHE ALL EVENTS
-$(document).ready(function () {
-var calendarAllEvents = $("#calendar-all-events").fullCalendar({
- events: "./modele/event/fetch-all-events.php",
- displayEventTime: false,
- eventRender: function (event, element, view) {
- if (event.allDay === "true") {
- event.allDay = true;
- } else {
- event.allDay = false;
- }
- },
- selectable: true,
- selectHelper: true,
- editable: false,
- eventClick: function (event) {
- // Afficher une pop-up avec les détails de l'événement
- alert(
- event.title +
- " : \n" +
- event.vehicule +
- " pour le client " +
- event.utilisateur +
- "\n" +
- "\n" +
- "Période de réservation : " +
- "\n" +
- event.start.format("dddd DD MMMM YYYY HH:mm") +
- " --> " +
- event.end.format("dddd DD MMMM YYYY HH:mm")
- );
- },
- eventRender: function (event, element, view) {
- element.bind("contextmenu", function (e) {
- e.preventDefault(); // Empêche le menu contextuel par défaut de s'afficher
- var deleteMsg = confirm("Voulez-vous vraiment supprimer la réservation?");
- if (deleteMsg) {
- $.ajax({
- type: "POST",
- url: "./modele/event/delete-event.php",
- data: "&id=" + event.id,
- success: function (response) {
- if (parseInt(response) > 0) {
- $("#calendar-all-events").fullCalendar("removeEvents", event.id);
- displayMessage("Réservation supprimée avec succès");
- }
- },
- });
+ // Fonction pour afficher un message
+ function displayMessage(message) {
+ alert(message);
+ }
+
+ // Fonction pour ajouter un événement
+ function addAdminEvent(url, formId, calendarId) {
+ $(formId).submit(function (event) {
+ event.preventDefault(); // Empêche la soumission du formulaire par défaut
+
+ // Récupérer les valeurs des champs
+ var id_vehicule = $(formId + " #eventidVehiculeSelect").val();
+ var id_user = $(formId + " #eventidUserSelect").val();
+ var start = $(formId + " #eventStart").val();
+ var end = $(formId + " #eventEnd").val();
+
+ // Validation de base des champs
+ if (!id_vehicule || !id_user || !start || !end) {
+ displayMessage("Tous les champs sont requis.");
+ return;
}
+
+ // Convertir le format datetime-local en format MySQL datetime
+ function convertToMySQLDateTime(datetimeLocal) {
+ return datetimeLocal.replace("T", " ") + ":00";
+ }
+ var startFormatted = convertToMySQLDateTime(start);
+ var endFormatted = convertToMySQLDateTime(end);
+
+ $.ajax({
+ url: url,
+ type: "POST",
+ data: {
+ id_vehicule: id_vehicule,
+ id_user: id_user,
+ start: startFormatted,
+ end: endFormatted,
+ },
+ success: function (response) {
+ var data = JSON.parse(response);
+ if (data.status === "success") {
+ alert(data.message);
+ $("#calendar-all-events").fullCalendar("refetchEvents"); // Met à jour les événements dans le calendrier
+ } else {
+ alert(data.message);
+ $("#calendar-all-events").fullCalendar("refetchEvents"); // Met à jour les événements dans le calendrier
+ }
+ },
+ error: function (xhr, status, error) {
+ console.error("Erreur lors de la création de l'événement:", error);
+ displayMessage("Erreur lors de la création de l'événement.");
+ },
+ });
});
- },
- eventMouseover: function (event, jsEvent, view) {
- // Change la forme du curseur lorsque vous survolez l'événement
- $(this).css("cursor", "pointer");
- },
- eventMouseout: function (event, jsEvent, view) {
- // Réinitialise la forme du curseur lorsque vous ne survolez plus l'événement
- $(this).css("cursor", "auto");
- },
-});
+ }
-//# AJOUTE EVENT ADMIN
-$(document).ready(function () {
- $("#eventForm").submit(function (event) {
- event.preventDefault(); // Empêche la soumission du formulaire par défaut
- // Récupérer les valeurs des champs
- var id_user = $("#eventidUserSelect").val();
- var id_vehicule = $("#eventidVehiculeSelect").val();
- var start = $("#eventStart").val();
- var end = $("#eventEnd").val();
- // Validation de base des champs
- if (!id_user || !id_vehicule || !start || !end) {
- displayMessage("Tous les champs sont requis.");
- return;
- }
- // Convertir le format datetime-local en format MySQL datetime
- function convertToMySQLDateTime(datetimeLocal) {
- return datetimeLocal.replace("T", " ") + ":00";
- }
- var startFormatted = convertToMySQLDateTime(start);
- var endFormatted = convertToMySQLDateTime(end);
+ // Fonction pour ajouter un événement utilisateur
+ function addUserEvent(url, formId, calendarId) {
+ $(formId).submit(function (event) {
+ event.preventDefault(); // Empêche la soumission du formulaire par défaut
- $.ajax({
- url: "./modele/event/add-event.php",
- type: "POST",
- data: {
- id_user: id_user,
- id_vehicule: id_vehicule,
- start: startFormatted,
- end: endFormatted,
- },
- success: function (response) {
- displayMessage("Réservation créée avec succès.");
- $("#eventForm")[0].reset();
- $("#calendar-all-events").fullCalendar("refetchEvents"); // Met à jour les événements dans le calendrier
- },
- error: function (xhr, status, error) {
- console.error("Erreur lors de la création de l'événement:", error);
- displayMessage("Erreur lors de la création de l'événement.");
- },
+ // Récupérer les valeurs des champs
+ var id_vehicule = $(formId + " #eventidVehiculeSelect").val();
+ var start = $(formId + " #eventStart").val();
+ var end = $(formId + " #eventEnd").val();
+
+ // Validation de base des champs
+ if (!id_vehicule || !start || !end) {
+ displayMessage("Tous les champs sont requis.");
+ return;
+ }
+
+ // Convertir le format datetime-local en format MySQL datetime
+ function convertToMySQLDateTime(datetimeLocal) {
+ return datetimeLocal.replace("T", " ") + ":00";
+ }
+ var startFormatted = convertToMySQLDateTime(start);
+ var endFormatted = convertToMySQLDateTime(end);
+
+ $.ajax({
+ url: url,
+ type: "POST",
+ data: {
+ id_vehicule: id_vehicule,
+ start: startFormatted,
+ end: endFormatted,
+ },
+ success: function (response) {
+ var data = JSON.parse(response);
+ if (data.status === "success") {
+ alert(data.message);
+ $("#eventMyForm")[0].reset();
+ $("#calendar-my-events").fullCalendar("refetchEvents"); // Met à jour les événements dans le calendrier
+ } else {
+ alert(data.message);
+ $("#calendar-my-events").fullCalendar("refetchEvents"); // Met à jour les événements dans le calendrier
+ }
+ },
+ error: function (xhr, status, error) {
+ console.error("Erreur lors de la création de l'événement:", error);
+ displayMessage("Erreur lors de la création de l'événement.");
+ },
+ });
});
- });
- function displayMessage(message) {
- alert(message);
}
+
+ // Appel de la fonction pour ajouter un événement administratif
+ addAdminEvent(
+ "./modele/event/add-event.php",
+ "#eventForm",
+ "#calendar-all-events"
+ );
+
+ // Appel de la fonction pour ajouter un événement de l'utilisateur
+ addUserEvent(
+ "./modele/event/add-my-event.php",
+ "#eventMyForm",
+ "#calendar-my-events"
+ );
});
-
-//# AJOUTE MY EVENT
-$(document).ready(function () {
- $("#eventMyForm").submit(function (event) {
- event.preventDefault(); // Empêche la soumission du formulaire par défaut
-
- var id_vehicule = $("#eventidVehiculeSelect").val();
- var start = $("#eventStart").val();
- var end = $("#eventEnd").val();
-
- // Convertir le format datetime-local en format MySQL datetime
- function convertToMySQLDateTime(datetimeLocal) {
- return datetimeLocal.replace("T", " ") + ":00";
- }
- var startFormatted = convertToMySQLDateTime(start);
- var endFormatted = convertToMySQLDateTime(end);
-
- $.ajax({
- url: "./modele/event/add-my-event.php",
- type: "POST",
- data: {
- id_vehicule: id_vehicule,
- start: startFormatted,
- end: endFormatted,
- },
- success: function (response) {
- displayMessage("Réservation créée avec succès.");
- $("#eventMyForm")[0].reset();
- $("#calendar-my-events").fullCalendar("refetchEvents"); // Met à jour les événements dans le calendrier
- },
- error: function (xhr, status, error) {
- console.error("Erreur lors de la création de l'événement:", error);
- displayMessage("Erreur lors de la création de l'événement.");
- },
- });
- });
-
- // Fonction pour afficher les messages à l'utilisateur
- function displayMessage(message) {
- // Implémentez votre méthode d'affichage des messages ici
- alert(message);
- }
-});
-
- // Fonction pour afficher les messages à l'utilisateur
- function displayMessage(message) {
- // Implémentez votre méthode d'affichage des messages ici
- alert(message);
- }
-});
-
-function displayMessage(message) {
- $("#message").html(""+message+"
");
- setInterval(function() { $(".alert-success").fadeOut(); }, 3000);
-}
\ No newline at end of file
diff --git a/legal.php b/legal.php
new file mode 100644
index 0000000..b706f9d
--- /dev/null
+++ b/legal.php
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/modele/event/add-event.php b/modele/event/add-event.php
index 2e6faf6..d13a67f 100644
--- a/modele/event/add-event.php
+++ b/modele/event/add-event.php
@@ -2,6 +2,12 @@
require '../../config/connexion_sql.php';
global $bdd;
+// Fonction de validation des dates
+function validateDateTime($dateTime, $format = 'Y-m-d H:i:s') {
+ $d = DateTime::createFromFormat($format, $dateTime);
+ return $d && $d->format($format) === $dateTime;
+}
+
// Récupération et validation des entrées
$start = isset($_POST['start']) ? $_POST['start'] : null;
$end = isset($_POST['end']) ? $_POST['end'] : null;
@@ -13,6 +19,57 @@ if (!$id_user || !$id_vehicule || !$start || !$end) {
die(json_encode(['status' => 'error', 'message' => 'Tous les champs sont requis.']));
}
+// Vérification que l'ID du véhicule est un entier positif
+if ($id_vehicule <= 0) {
+ die(json_encode(['status' => 'error', 'message' => 'ID du véhicule invalide.']));
+}
+
+// Vérification que l'ID du véhicule existe dans la base de données
+$stmtVehicule = $bdd->prepare("SELECT COUNT(*) FROM Vehicules WHERE id = :id_vehicule");
+$stmtVehicule->bindParam(':id_vehicule', $id_vehicule, PDO::PARAM_INT);
+$stmtVehicule->execute();
+if ($stmtVehicule->fetchColumn() == 0) {
+ die(json_encode(['status' => 'error', 'message' => 'Le véhicule spécifié n\'existe pas.']));
+}
+
+// Validation des formats de date
+if (!validateDateTime($start) || !validateDateTime($end)) {
+ die(json_encode(['status' => 'error', 'message' => 'Les dates doivent être dans un format valide (YYYY-MM-DD HH:MM:SS).']));
+}
+
+// Vérification que la date de début est postérieure à la date actuelle
+$currentDateTime = new DateTime();
+$startDateTime = new DateTime($start);
+if ($startDateTime <= $currentDateTime) {
+ die(json_encode(['status' => 'error', 'message' => 'Vous ne pouvez réserver que pour le jour même ou les jours suivants.']));
+}
+
+// Vérification que la date de fin est postérieure à la date de début
+$endDateTime = new DateTime($end);
+if ($endDateTime <= $startDateTime) {
+ die(json_encode(['status' => 'error', 'message' => 'La date de fin doit être postérieure à la date de début.']));
+}
+
+// Vérification que l'ID du client existe dans la base de données
+$stmtResUser = $bdd->prepare("SELECT COUNT(*) FROM Reservations WHERE id_user = :id_user AND start < :end AND end > :start");
+$stmtResUser->bindParam(':id_user', $id_user , PDO::PARAM_INT);
+$stmtResUser->bindParam(':start', $start, PDO::PARAM_STR);
+$stmtResUser->bindParam(':end', $end, PDO::PARAM_STR);
+$stmtResUser->execute();
+if ($stmtResUser->fetchColumn() > 0) {
+ die(json_encode(['status' => 'error', 'message' => 'L\'utilisateur à déjà réservé un véhicule pendant cette période.']));
+}
+
+// Vérification que l'ID du véhicule existe dans la base de données
+$stmtResVehicule = $bdd->prepare("SELECT COUNT(*) FROM Reservations WHERE id_vehicule = :id_vehicule AND start < :end AND end > :start");
+$stmtResVehicule->bindParam(':id_vehicule', $id_vehicule, PDO::PARAM_INT);
+$stmtResVehicule->bindParam(':start', $start, PDO::PARAM_STR);
+$stmtResVehicule->bindParam(':end', $end, PDO::PARAM_STR);
+$stmtResVehicule->execute();
+if ($stmtResVehicule->fetchColumn() > 0) {
+ die(json_encode(['status' => 'error', 'message' => 'Le véhicule est déjà réservé pendant cette période.']));
+}
+
try {
// Démarrer la transaction
$bdd->beginTransaction();
diff --git a/modele/event/add-my-event.php b/modele/event/add-my-event.php
index 11f9a09..65c7d65 100644
--- a/modele/event/add-my-event.php
+++ b/modele/event/add-my-event.php
@@ -6,8 +6,6 @@ global $bdd;
if (!isset($id_session)) {
die(json_encode(['status' => 'error', 'message' => 'Utilisateur non connecté.']));
}
-$id_user = $id_session; // Récupérer l'ID de l'utilisateur depuis la session
-
// Fonction de validation des dates
function validateDateTime($dateTime, $format = 'Y-m-d H:i:s') {
$d = DateTime::createFromFormat($format, $dateTime);
@@ -15,20 +13,67 @@ function validateDateTime($dateTime, $format = 'Y-m-d H:i:s') {
}
// Récupération et validation des entrées
+$id_user = intval($_SESSION['id_session']);
$start = isset($_POST['start']) ? $_POST['start'] : null;
$end = isset($_POST['end']) ? $_POST['end'] : null;
$id_vehicule = isset($_POST['id_vehicule']) ? intval($_POST['id_vehicule']) : null;
// Vérification que toutes les entrées sont présentes et valides
-if (!$id_vehicule || !$start || !$end) {
+if (!$id_user || !$id_vehicule || !$start || !$end) {
die(json_encode(['status' => 'error', 'message' => 'Tous les champs sont requis.']));
}
+// Vérification que l'ID du véhicule est un entier positif
+if ($id_vehicule <= 0) {
+ die(json_encode(['status' => 'error', 'message' => 'ID du véhicule invalide.']));
+}
+
+// Vérification que l'ID du véhicule existe dans la base de données
+$stmtVehicule = $bdd->prepare("SELECT COUNT(*) FROM Vehicules WHERE id = :id_vehicule");
+$stmtVehicule->bindParam(':id_vehicule', $id_vehicule, PDO::PARAM_INT);
+$stmtVehicule->execute();
+if ($stmtVehicule->fetchColumn() == 0) {
+ die(json_encode(['status' => 'error', 'message' => 'Le véhicule spécifié n\'existe pas.']));
+}
+
// Validation des formats de date
if (!validateDateTime($start) || !validateDateTime($end)) {
die(json_encode(['status' => 'error', 'message' => 'Les dates doivent être dans un format valide (YYYY-MM-DD HH:MM:SS).']));
}
+// Vérification que la date de début est postérieure à la date actuelle
+$currentDateTime = new DateTime();
+$startDateTime = new DateTime($start);
+if ($startDateTime <= $currentDateTime) {
+ die(json_encode(['status' => 'error', 'message' => 'Vous ne pouvez réserver que pour le jour même ou les jours suivants.']));
+}
+
+// Vérification que la date de fin est postérieure à la date de début
+$endDateTime = new DateTime($end);
+if ($endDateTime <= $startDateTime) {
+ die(json_encode(['status' => 'error', 'message' => 'La date de fin doit être postérieure à la date de début.']));
+}
+
+// Vérification que l'ID du client existe dans la base de données
+$stmtResUser = $bdd->prepare("SELECT COUNT(*) FROM Reservations WHERE id_user = :id_user AND start < :end AND end > :start");
+$stmtResUser->bindParam(':id_user', $id_user , PDO::PARAM_INT);
+$stmtResUser->bindParam(':start', $start, PDO::PARAM_STR);
+$stmtResUser->bindParam(':end', $end, PDO::PARAM_STR);
+$stmtResUser->execute();
+if ($stmtResUser->fetchColumn() > 0) {
+ die(json_encode(['status' => 'error', 'message' => 'Vous avez déjà réservé un véhicule pendant cette période.']));
+}
+
+// Vérification que l'ID du véhicule existe dans la base de données
+$stmtResVehicule = $bdd->prepare("SELECT COUNT(*) FROM Reservations WHERE id_vehicule = :id_vehicule AND start < :end AND end > :start");
+$stmtResVehicule->bindParam(':id_vehicule', $id_vehicule, PDO::PARAM_INT);
+$stmtResVehicule->bindParam(':start', $start, PDO::PARAM_STR);
+$stmtResVehicule->bindParam(':end', $end, PDO::PARAM_STR);
+$stmtResVehicule->execute();
+if ($stmtResVehicule->fetchColumn() > 0) {
+ die(json_encode(['status' => 'error', 'message' => 'Le véhicule est déjà réservé pendant cette période.']));
+}
+
try {
// Démarrer la transaction
$bdd->beginTransaction();
diff --git a/modele/profil.php b/modele/profil.php
index 8315df8..8fd1fe5 100644
--- a/modele/profil.php
+++ b/modele/profil.php
@@ -1,67 +1,66 @@
prepare('INSERT INTO tentatives_connexion (pseudo, timestamp) VALUES (:pseudo, :timestamp)');
+ $req->bindValue(':pseudo', $pseudo, PDO::PARAM_STR);
+ $req->bindValue(':timestamp', $timestamp, PDO::PARAM_INT);
+ $req->execute();
}
-function check_Password(){
- global $bdd;
- $pseudo=$_POST['pseudo_connect'];
- $req = $bdd->prepare('SELECT mdp, id, privilege, pseudo FROM Clients WHERE pseudo = :pseudo');
- $req->bindValue(':pseudo',$pseudo , PDO::PARAM_STR);
- $req->execute();
- $data = $req->fetch();
- return $data;
- }
-}
-function get_MemberCount(){
+
+ // Méthode pour vérifier si un utilisateur est bloqué
+ public function isUserBlocked($pseudo) {
+ global $bdd;
+ $blockDuration = 300; // Durée de blocage en secondes (300 secondes = 5 minutes)
+ $timestamp = time() - $blockDuration; // Calculer le timestamp il y a 5 minutes
+
+ $req = $bdd->prepare('SELECT COUNT(*) AS attempts FROM tentatives_connexion WHERE pseudo = :pseudo AND timestamp > :timestamp');
+ $req->bindValue(':pseudo', $pseudo, PDO::PARAM_STR);
+ $req->bindValue(':timestamp', $timestamp, PDO::PARAM_INT);
+ $req->execute();
+ $result = $req->fetch(PDO::FETCH_ASSOC);
+
+ // Si le nombre de tentatives de connexion infructueuses dépasse un certain seuil, l'utilisateur est bloqué
+ return $result['attempts'] >= 3; // Vous pouvez ajuster ce nombre selon vos besoins
+ }
+ function get_MemberInfoId(){
global $bdd;
- $TotalDesMembres = $bdd->query('SELECT COUNT(*) FROM Clients')->fetchColumn();
- return $TotalDesMembres;
-}
-function get_LastMember(){
- global $bdd;
- $req = $bdd->query('SELECT pseudo, id FROM Clients ORDER BY id DESC LIMIT 0, 1');
- $data = $req->fetch();
- return $data;
-}
-function get_checkPseudo(){
- global $bdd;
- $pseudo=$_POST['pseudo'];
- $req = $bdd->prepare('SELECT COUNT(*) AS nbr FROM Clients WHERE pseudo =:pseudo');
- $req->bindValue(':pseudo',$pseudo, PDO::PARAM_STR);
+ $id=(isset($_SESSION['id_session']))?(int) $_SESSION['id_session']:0;
+
+ //On prend les infos du membre
+ $req = $bdd->prepare('SELECT pseudo, mdp, email, avatar, adresse, prenom, nom, phone, dateenregistre FROM Clients WHERE id=:id');
+ $req->bindValue(':id',$id,PDO::PARAM_INT);
$req->execute();
- $pseudo_free=($req->fetchColumn()==0)?1:0;
- $req->CloseCursor();
- return $pseudo_free;
+ $userData = $req->fetch();
+ return $userData;
+ }
+
+ public function checkCredentials($pseudo, $password) {
+ global $bdd;
+ $req = $bdd->prepare('SELECT mdp FROM Clients WHERE pseudo = :pseudo');
+ $req->bindValue(':pseudo', $pseudo, PDO::PARAM_STR);
+ $req->execute();
+ $userData = $req->fetch();
+ if ($userData && password_verify($password, $userData['mdp'])) {
+ return true;
+ }
+ return false;
+ }
+
+ public function check_Password($pseudo) {
+ global $bdd;
+ $req = $bdd->prepare('SELECT mdp, id, privilege, pseudo FROM Clients WHERE pseudo = :pseudo');
+ $req->bindValue(':pseudo', $pseudo, PDO::PARAM_STR);
+ $req->execute();
+ $userData = $req->fetch(PDO::FETCH_ASSOC);
+ return $userData ?: null; // Renvoyer null si aucune donnée n'est trouvée
+ }
}
-function get_checkMail(){
- global $bdd;
- $email = $_POST['email'];
- $req = $bdd->prepare('SELECT COUNT(*) AS nbr FROM Clients WHERE email =:mail');
- $req->bindValue(':mail',$email, PDO::PARAM_STR);
- $req->execute();
- $mail_free=($req->fetchColumn()==0)?1:0;
- $req->CloseCursor();
- return $mail_free;
-}
-function get_ProfilsInfo(){ // Informations de tout les vehicules dans un tableau
- global $bdd;
- $req = $bdd->prepare('SELECT id, privilege, dateenregistre, pseudo, prenom, nom, phone, adresse, mdp, email, avatar, phone FROM Clients ORDER BY id');
- $req->execute();
- $data = $req->fetchAll(PDO::FETCH_ASSOC);
- return $data;
-}
-function get_MemberInfo(){
- global $bdd;
- $membre = isset($_GET['m']) ? (int)$_GET['m'] : 0;
- $req = $bdd->prepare('SELECT pseudo, mdp, email, avatar, adresse, prenom, nom, phone, dateenregistre FROM Clients WHERE id = :membre');
- $req->execute(array(':membre' => $membre));
- return $req->fetch(PDO::FETCH_ASSOC);
+// Fonction pour vérifier si l'email est disponible
+function isEmailAvailable($email) {
+ return get_checkMail($email);
}
function get_MemberInfoId(){
global $bdd;
@@ -71,185 +70,190 @@ function get_MemberInfoId(){
$req = $bdd->prepare('SELECT pseudo, mdp, email, avatar, adresse, prenom, nom, phone, dateenregistre FROM Clients WHERE id=:id');
$req->bindValue(':id',$id,PDO::PARAM_INT);
$req->execute();
- $data = $req->fetch();
- return $data;
+ $userData = $req->fetch();
+ return $userData;
}
-function get_checkMail2(){
- global $bdd;
- $id=(isset($_SESSION['id_session']))?(int) $_SESSION['id_session']:0;
- //On commence donc par récupérer le mail
- $req = $bdd->prepare('SELECT email FROM Clients WHERE id =:id');
- $req->bindValue(':id',$id,PDO::PARAM_INT);
- $req->execute();
- $data = $req->fetch();
- return $data;
+
+function get_MemberCount() {
+ global $bdd;
+ return $bdd->query('SELECT COUNT(*) FROM Clients')->fetchColumn();
}
-function get_Pseudo(){
- global $bdd;
- $id=(isset($_SESSION['id_session']))?(int) $_SESSION['id_session']:0;
- //On commence donc par récupérer le pseudo
- $req = $bdd->prepare('SELECT pseudo FROM Clients WHERE id =:id');
- $req->bindValue(':id',$id,PDO::PARAM_INT);
- $req->execute();
- $data = $req->fetch();
- return $data;
+
+function get_LastMember() {
+ global $bdd;
+ $req = $bdd->query('SELECT pseudo, id FROM Clients ORDER BY id DESC LIMIT 1');
+ return $req->fetch();
}
-function get_checkCopyMail(){
- global $bdd;
- $email = $_POST['email'];
- //Il faut que l'adresse email n'ait jamais été utilisée
- $req = $bdd->prepare('SELECT COUNT(*) AS nbr FROM Clients WHERE email =:mail');
- $req->bindValue(':mail',$email,PDO::PARAM_STR);
- $req->execute();
- $mail_free = ($req->fetchColumn()==0)?1:0;
- $req->CloseCursor();
- return $mail_free;
+
+function get_checkPseudo($pseudo) {
+ global $bdd;
+ $req = $bdd->prepare('SELECT COUNT(*) AS nbr FROM Clients WHERE pseudo = :pseudo');
+ $req->bindValue(':pseudo', $pseudo, PDO::PARAM_STR);
+ $req->execute();
+ return $req->fetchColumn() == 0;
}
-# Inscription modele
-function post_Registre(){
- global $bdd;
- $pseudo=$_POST['pseudo'];
- $pass = /*md5*/($_POST['password']);
- $email = $_POST['email'];
- $localisation = $_POST['localisation'];
- $prenom = $_POST['prenom'];
- $nom = $_POST['nom'];
- $phone = $_POST['phone'];
- $image = $_FILES['avatar'];
- // Créer le répertoire pour les images si nécessaire
+
+function get_checkMail($email) {
+ global $bdd;
+ $req = $bdd->prepare('SELECT COUNT(*) AS nbr FROM Clients WHERE email = :mail');
+ $req->bindValue(':mail', $email, PDO::PARAM_STR);
+ $req->execute();
+ return $req->fetchColumn() == 0;
+}
+
+function get_checkMyMail($email,$id) {
+ global $bdd;
+ $req = $bdd->prepare('SELECT COUNT(*) AS nbr FROM Clients WHERE email = :mail AND id != :id');
+ $req->bindValue(':mail', $email, PDO::PARAM_STR);
+ $req->bindValue(':id', $id, PDO::PARAM_INT);
+ $req->execute();
+ return $req->fetchColumn() == 0;
+}
+
+function get_ProfilsInfo() {
+ global $bdd;
+ $req = $bdd->query('SELECT id, privilege, dateenregistre, pseudo, prenom, nom, phone, adresse, mdp, email, avatar FROM Clients ORDER BY id');
+ return $req->fetchAll(PDO::FETCH_ASSOC);
+}
+
+function get_MemberInfo($id) {
+ global $bdd;
+ $req = $bdd->prepare('SELECT pseudo, mdp, email, avatar, adresse, prenom, nom, phone, dateenregistre FROM Clients WHERE id = :id');
+ $req->bindValue(':id', $id, PDO::PARAM_INT);
+ $req->execute();
+ return $req->fetch(PDO::FETCH_ASSOC);
+}
+
+function post_Registre($pseudo, $password, $email, $localisation, $prenom, $nom, $phone, $avatar) {
+ global $bdd;
+ $hashedPassword = password_hash($password, PASSWORD_DEFAULT);
+ $imagePath = handleAvatarUpload($pseudo, $avatar);
+
+ $req = $bdd->prepare('INSERT INTO Clients (pseudo, mdp, email, avatar, adresse, prenom, nom, phone, dateenregistre)
+ VALUES (:pseudo, :pass, :email, :avatar, :localisation, :prenom, :nom, :phone, NOW())');
+ $req->bindValue(':pseudo', $pseudo, PDO::PARAM_STR);
+ $req->bindValue(':pass', $hashedPassword, PDO::PARAM_STR);
+ $req->bindValue(':email', $email, PDO::PARAM_STR);
+ $req->bindValue(':avatar', $imagePath, PDO::PARAM_STR);
+ $req->bindValue(':localisation', $localisation, PDO::PARAM_STR);
+ $req->bindValue(':prenom', $prenom, PDO::PARAM_STR);
+ $req->bindValue(':nom', $nom, PDO::PARAM_STR);
+ $req->bindValue(':phone', $phone, PDO::PARAM_STR);
+ $req->execute();
+}
+
+// Pour la fonction post_UpdateProfile
+function post_UpdateProfile($id, $pseudo, $pass = null, $email = null, $localisation = null, $phone = null, $avatar = null) {
+ global $bdd;
+ $fields = [];
+ $params = [':id' => $id];
+
+ if ($pass !== null) {
+ $fields[] = 'mdp = :mdp';
+ $params[':mdp'] = password_hash($pass, PASSWORD_DEFAULT);
+ }
+ if ($email !== null) {
+ $fields[] = 'email = :mail';
+ $params[':mail'] = $email;
+ }
+ if ($localisation !== null) {
+ $fields[] = 'adresse = :loc';
+ $params[':loc'] = $localisation;
+ }
+ if ($phone !== null) {
+ $fields[] = 'phone = :phone';
+ $params[':phone'] = $phone;
+ }
+ if (!empty($_FILES['avatar']['name'])) {
+ $fields[] = 'avatar = :avatar';
+ $params[':avatar'] = handleAvatarUpload($pseudo, $_FILES['avatar']);
+ }
+
+ $sql = 'UPDATE Clients SET ' . implode(', ', $fields) . ' WHERE id = :id';
+ $req = $bdd->prepare($sql);
+ foreach ($params as $key => $value) {
+ $req->bindValue($key, $value, PDO::PARAM_STR);
+ }
+ $req->execute();
+}
+
+function handleAvatarUpload($pseudo, $avatar) {
$dirPath = "./images/avatars/" . $pseudo . "/";
+ $Path = "./images/avatars/" . $pseudo . "/";
+ $defaultDirImagePath = "./images/avatars/img_user.jpg";
+ $dirImagePath = "./images/avatars/" . $pseudo . "/img_user.jpg";
+ $imagePath = "/images/avatars/" . $pseudo . "/img_user.jpg";
if (!is_dir($dirPath)) {
mkdir($dirPath, 0700, true);
}
- // Vérifier si l'image est fournie et valide
- if (!empty($image['size']) && $image['error'] === UPLOAD_ERR_OK) {
- $nomimage = edit_avatar($image, $pseudo);
+ if (!empty($avatar['size']) && $avatar['error'] === UPLOAD_ERR_OK) {
+ return edit_avatar($avatar, $pseudo);
} else {
- // Utiliser une image par défaut si aucune image n'est fournie
- $defaultImagePath = "./images/avatars/img_user.jpg";
- $dirPath = "./images/avatars/" . $pseudo . "/img_user.jpg";
- $nomimage = "/images/avatars/" . $pseudo . "/img_user.jpg";
- copy($defaultImagePath, $dirPath);
+ copy($defaultDirImagePath, $dirImagePath);
+ return $imagePath;
}
- $req = $bdd->prepare('INSERT INTO Clients (pseudo, mdp, email, avatar, adresse, prenom, nom, phone, dateenregistre)
- VALUES (:pseudo, :pass, :email, :nomimage, :localisation, :prenom, :nom, :phone, NOW())');
- $req->bindValue(':pseudo', $pseudo, PDO::PARAM_STR);
- $req->bindValue(':pass', $pass, PDO::PARAM_STR);
- $req->bindValue(':email', $email, PDO::PARAM_STR);
- $req->bindValue(':nomimage', $nomimage, PDO::PARAM_STR);
- $req->bindValue(':localisation', $localisation, PDO::PARAM_STR);
- $req->bindValue(':prenom', $prenom, PDO::PARAM_STR);
- $req->bindValue(':nom', $nom, PDO::PARAM_STR);
- $req->bindValue(':phone', $phone, PDO::PARAM_STR);
- $req->execute();
+}
+
+function edit_avatar($image, $pseudo) {
+ $defaultDirImagePath = "./images/avatars/img_user.jpg";
+ $dirImagePath = "./images/avatars/" . $pseudo . "/img_user.jpg";
+ $imagePath = "/images/avatars/" . $pseudo . "/img_user.jpg";
+ $newWidth = 300;
+ $newHeight = 300;
+ list($width, $height) = getimagesize($image['tmp_name']);
+ $imageResized = imagecreatetruecolor($newWidth, $newHeight);
+
+ switch (exif_imagetype($image['tmp_name'])) {
+ case IMAGETYPE_JPEG:
+ $imageSource = imagecreatefromjpeg($image['tmp_name']);
+ break;
+ case IMAGETYPE_PNG:
+ $imageSource = imagecreatefrompng($image['tmp_name']);
+ break;
+ case IMAGETYPE_GIF:
+ $imageSource = imagecreatefromgif($image['tmp_name']);
+ break;
+ default:
+ return "Unsupported image type";
+ }
+
+ imagecopyresampled($imageResized, $imageSource, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
+ imagejpeg($imageResized, $dirImagePath, 85);
+ imagedestroy($imageResized);
+ imagedestroy($imageSource);
+ return $imagePath;
}
function post_RemoveAvatar($pseudo){
global $bdd;
$id=(isset($_SESSION['id_session']))?(int) $_SESSION['id_session']:0;
+ $defaultDirImagePath = "./images/avatars/img_user.jpg";
+ $dirImagePath = "./images/avatars/" . $pseudo . "/img_user.jpg";
+ $imagePath = "/images/avatars/" . $pseudo . "/img_user.jpg";
// Utiliser une image par défaut si aucune image n'est fournie
- $defaultImagePath = "./images/avatars/img_user.jpg";
- $dirPath = "./images/avatars/" . $pseudo . "/img_user.jpg";
- $nomimage = "./images/avatars/" . $pseudo . "/img_user.jpg";
- copy($defaultImagePath, $dirPath);
-}
-function post_UpdateProfile($pseudo, $pass = null, $email = null, $localisation = null, $phone = null) {
- global $bdd;
- $id = isset($_SESSION['id_session']) ? (int)$_SESSION['id_session'] : 0;
- // Mise à jour de l'avatar
- if (isset($_FILES['avatar'])) {
- $image = $_FILES['avatar'];
- $dirPath = "./images/avatars/" . $pseudo . "/";
- // Vérifier si l'image est fournie et valide
- if (!empty($image['size']) && $image['error'] === UPLOAD_ERR_OK) {
- $nomimage = edit_avatar($image, $pseudo);
- } else {
- // Utiliser une image par défaut si aucune image n'est fournie
- $defaultImagePath = "./images/avatars/img_user.jpg";
- $dirPath = "./images/avatars/" . $pseudo . "/img_user.jpg";
- $nomimage = "./images/avatars/" . $pseudo . "/img_user.jpg";
- file_exists($nomimage) ? : copy($defaultImagePath, $nomimage);
- }
- }
- // Mise à jour des informations du membre
- if ($pass !== null || $email !== null || $localisation !== null || $phone !== null) {
- $fields = [];
- $params = [':id' => $id];
- if ($pass !== null) {
- $fields[] = 'mdp = :mdp';
- $params[':mdp'] = $pass; // Utilisez password_hash($pass, PASSWORD_DEFAULT) pour sécuriser les mots de passe
- }
- if ($email !== null) {
- $fields[] = 'email = :mail';
- $params[':mail'] = $email;
- }
- if ($localisation !== null) {
- $fields[] = 'adresse = :loc';
- $params[':loc'] = $localisation;
- }
- if ($phone !== null) {
- $fields[] = 'phone = :phone';
- $params[':phone'] = $phone;
- }
- if (!empty($fields)) {
- $sql = 'UPDATE Clients SET ' . implode(', ', $fields) . ' WHERE id = :id';
- $req = $bdd->prepare($sql);
- $req->execute($params);
- }
- }
-}
-function edit_avatar($image, $pseudo) {
- if (isset($image)) {
- $source = $image['tmp_name'];
- $dir = "./images/avatars/" . $pseudo . "/img_user.jpg";
- // Redimensionner l'image à la taille spécifiée (300x300)
- $newWidth = 300;
- $newHeight = 300;
- list($width, $height) = getimagesize($source);
- $imageResized = imagecreatetruecolor($newWidth, $newHeight);
- switch (exif_imagetype($source)) {
- case IMAGETYPE_JPEG:
- $imageSource = imagecreatefromjpeg($source);
- break;
- case IMAGETYPE_PNG:
- $imageSource = imagecreatefrompng($source);
- break;
- case IMAGETYPE_GIF:
- $imageSource = imagecreatefromgif($source);
- break;
- default:
- return "Unsupported image type";
- }
- imagecopyresized($imageResized, $imageSource, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
- // Sauvegarder l'image redimensionnée en JPEG
- imagejpeg($imageResized, $dir, 85); // Le troisième paramètre est la qualité de l'image JPEG (0-100)
- // Libérer la mémoire
- imagedestroy($imageResized);
- imagedestroy($imageSource);
- // Retourner le chemin relatif de l'image redimensionnée
- return $dir;
- }
+ copy($defaultDirImagePath, $imagePath);
}
+
function post_RemoveClient($id) {
global $bdd;
- $id = $_SESSION['id_session'];
- // Récupérer le chemin de l'image à partir de la base de données
+ // Suppression de l'image
$req = $bdd->prepare('SELECT avatar FROM Clients WHERE id= :id');
$req->bindValue(':id', $id, PDO::PARAM_INT);
$req->execute();
- $data = $req->fetch(PDO::FETCH_ASSOC);
- if ($data) {
- // Supprimer l'image
- $imagePath = $data['avatar'];
- unlink($imagePath);
- // Supprimer le dossier
+ $userData = $req->fetch(PDO::FETCH_ASSOC);
+ if ($userData) {
+ $imagePath = $userData['avatar'];
+ if (file_exists($imagePath)) {
+ unlink($imagePath);
+ }
$folderPath = dirname($imagePath);
- rmdir($folderPath);
+ if (is_dir($folderPath)) {
+ rmdir($folderPath);
+ }
}
- // Supprimer le véhicule de la base de données
+ // Suppression de l'utilisateur de la base de données
$req = $bdd->prepare('DELETE FROM Clients WHERE id=:id');
$req->bindValue(':id', $id, PDO::PARAM_INT);
$req->execute();
- $req->closeCursor();
- session_destroy(); // Vous pouvez adapter cette étape en fonction de votre gestion de sessions
+ session_destroy();
}
?>
\ No newline at end of file
diff --git a/modele/vehicule.php b/modele/vehicule.php
index 681ec95..7f1afce 100644
--- a/modele/vehicule.php
+++ b/modele/vehicule.php
@@ -1,5 +1,5 @@
prepare('SELECT COUNT(*) AS nbr FROM Vehicules WHERE plaque =:plaque');
@@ -65,11 +65,8 @@ function post_RemoveVehicule($id) {
$data = $req->fetch(PDO::FETCH_ASSOC);
if ($data) {
// Supprimer l'image
- $imagePath = $data['image'];
+ $imagePath = "." . $data['image'];
unlink($imagePath);
- // Supprimer le dossier
- $folderPath = dirname($imagePath);
- rmdir($folderPath);
}
// Supprimer le véhicule de la base de données
$req = $bdd->prepare('DELETE FROM Vehicules WHERE id=:id');
@@ -94,9 +91,9 @@ function post_RegistreCar(){ // Ajout vehicule en DB
$nomimage = edit_image($image, $plaque);
} else {
// Utiliser une image par défaut si aucune image n'est fournie
- $defaultImagePath = "./images/vehicules/img_voiture.png";
- $dirPath = "./images/vehicules/" . $plaque . "/img_voiture.png";
- $nomimage = "/images/vehicules/" . $plaque . "/img_voiture.png";
+ $defaultImagePath = "./images/vehicules/img_vehicule.png";
+ $dirPath = "./images/vehicules/" . $plaque . "/img_vehicule.png";
+ $nomimage = "/images/vehicules/" . $plaque . "/img_vehicule.png";
copy($defaultImagePath, $dirPath);
}
$req = $bdd->prepare('INSERT INTO Vehicules (plaque, marque, modele, annee, image) VALUES (:plaque, :marque, :modele, :annee, :nomimage)');
@@ -111,6 +108,7 @@ function edit_image($image, $plaque) {
if (isset($image)) {
$source = $image['tmp_name'];
$dir = "./images/vehicules/" . $plaque . "/img_vehicule.png";
+ $nomimage = "/images/vehicules/" . $plaque . "/img_vehicule.png";
// Redimensionner l'image à la taille spécifiée (300x300)
$newWidth = 300;
$newHeight = 300;
@@ -136,7 +134,62 @@ function edit_image($image, $plaque) {
imagedestroy($imageResized);
imagedestroy($imageSource);
// Retourner le chemin relatif de l'image redimensionnée
- return $dir;
+ return $nomimage;
}
}
+// Fonction pour afficher un message d'erreur
+function displayInscriptionErrorMessage($errors) {
+ echo '';
+}
+
+// Fonction pour afficher un message de succès
+function displayInscriptionSuccessMessage() {
+ echo '';
+}
?>
\ No newline at end of file
diff --git a/sql/CARIA.sql b/sql/CARIA.sql
new file mode 100644
index 0000000..73f3f5b
--- /dev/null
+++ b/sql/CARIA.sql
@@ -0,0 +1,153 @@
+use CARIA;
+DROP TABLE IF EXISTS tentatives_connexion,Reservations,Clients,Vehicules;
+
+CREATE TABLE tentatives_connexion (
+ id INT AUTO_INCREMENT PRIMARY KEY,
+ pseudo VARCHAR(25) NOT NULL,
+ timestamp INT NOT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
+--
+-- Structure de la table Clients
+--
+CREATE TABLE Clients (
+ id int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
+ privilege int(11) DEFAULT 2,
+ dateenregistre timestamp NOT NULL DEFAULT current_timestamp(),
+ pseudo varchar(25),
+ prenom varchar(25) DEFAULT NULL,
+ nom varchar(25) DEFAULT NULL,
+ adresse varchar(50) DEFAULT NULL,
+ phone varchar(15) DEFAULT NULL,
+ email varchar(30) DEFAULT NULL,
+ mdp varchar(60) NOT NULL,
+ avatar varchar(250) DEFAULT '/images/avatars/img_user.jpg'
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
+
+--
+-- Structure de la table Vehicules
+--
+CREATE TABLE Vehicules (
+ id int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
+ plaque varchar(9) NOT NULL,
+ marque varchar(50) DEFAULT NULL,
+ modele varchar(50) DEFAULT NULL,
+ annee int(4) DEFAULT NULL,
+ image varchar(250) NOT NULL DEFAULT '/images/vehicules/img_vehicule.png',
+ disponible tinyint(1) NOT NULL DEFAULT 0,
+ latitude decimal(9,6) NOT NULL DEFAULT 48.000000,
+ longitude decimal(9,6) NOT NULL DEFAULT 2.000000,
+ ip varchar(40) NOT NULL DEFAULT '127.0.0.1'
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
+
+--
+-- Structure de la table Reservations
+--
+CREATE TABLE Reservations (
+ id int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
+ id_user int(11) DEFAULT NULL,
+ id_vehicule int(11) DEFAULT NULL,
+ title varchar(255) DEFAULT NULL,
+ start timestamp NULL DEFAULT NULL,
+ end timestamp NULL DEFAULT NULL,
+ CONSTRAINT uc_vehicule_reservation UNIQUE (id_vehicule, start, end),
+ CONSTRAINT uc_client_reservation UNIQUE (id_user, start, end),
+ CONSTRAINT Reservations_idfk_1 FOREIGN KEY (id_vehicule) REFERENCES Vehicules (id),
+ CONSTRAINT Reservations_idfk_2 FOREIGN KEY (id_user) REFERENCES Clients (id)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
+
+-- Index pour accélérer les recherches
+CREATE INDEX idx_id_user ON Reservations (id_user);
+CREATE INDEX idx_id_vehicule ON Reservations (id_vehicule) USING BTREE;
+
+
+
+use CARIA;
+--
+-- Déchargement des données de la table Clients
+--
+INSERT INTO Clients (privilege, dateenregistre, pseudo, prenom, nom, adresse, mdp, email, avatar, phone) VALUES
+(1, '2016-09-11 22:00:00', 'sa', 'sa', 'pc', 'sa', '$2y$10$SGOcYko1PzYekMHfLBvlPOFUL3V7r0zKSxrrfaNUMXv.Mm3mQizvC', 'sa@gmail.com', '/images/avatars/sa/img_user.jpg', "0658293476"),
+(2, NOW(), 'utilisateur1', 'John', 'Doe', '123 Rue de Paris', '$2y$10$OkaujySOK.TWqiNOX4BSreuc7OFYuWji9EvruDlo71RRoXNR0HCbC', 'john.doe@example.com', '/images/avatars/utilisateur1/img_user.jpg', '0123456789'),
+(2, NOW(), 'utilisateur2', 'Alice', 'Smith', '456 Avenue des Champs-Élysées', '$2y$10$rhZHTmq9QZA5uRyUr22sauEvHXKAZo.mjrLAsZ.SpImF.aqG5GSj6', 'alice.smith@example.com', '/images/avatars/utilisateur2/img_user.jpg', '9876543210'),
+(2, NOW(), 'utilisateur3', 'Michael', 'Johnson', '789 Boulevard Saint-Michel', '$2y$10$/b9EglJ5RlO8vZK36PjjAuosbVkuB6T6xnr2uvq.sMtIg3hNjN0nG', 'michael.johnson@example.com', '/images/avatars/utilisateur3/img_user.jpg', '1234567890'),
+(2, NOW(), 'utilisateur4', 'Emma', 'Brown', '1011 Rue de Rivoli', 'motdepasse4', 'emma.brown@example.com', '/images/avatars/utilisateur4/img_user.jpg', '0987654321'),
+(2, NOW(), 'utilisateur5', 'David', 'Wilson', '1213 Rue du Faubourg Saint-Honoré', '$2y$10$9E1c4mmQqpgry7m/TuDU/eCsIb5HAWzPpK1BkP6Slg.4r.huK1gMS', 'david.wilson@example.com', '/images/avatars/utilisateur5/img_user.jpg', '1122334455'),
+(2, NOW(), 'utilisateur6', 'Sophia', 'Martinez', '1415 Avenue Montaigne', '$2y$10$ghZ9/hsN4EdhaJ0JyUbbVO5KaYpRMx.ax9yz4ZCAzAQ5NXL9vzuIW', 'sophia.martinez@example.com', '/images/avatars/utilisateur6/img_user.jpg', '5544332211'),
+(2, NOW(), 'utilisateur7', 'Matthew', 'Anderson', '1617 Avenue de la Grande Armée', '$2y$10$kpaoSFeugXSq8R461rQJ/uH6zM/k841Oi5tz8zjmUboiM7swsI9vC', 'matthew.anderson@example.com', '/images/avatars/utilisateur7/img_user.jpg', '6677889900'),
+(2, NOW(), 'utilisateur8', 'Olivia', 'Taylor', '1819 Rue de la Paix', '$2y$10$5qpp5BCM1BcYMt2MdTld9.6MeCUo96yl0T1TqLtxlrojE1GD8H0z.', 'olivia.taylor@example.com', '/images/avatars/utilisateur8/img_user.jpg', '7788990011'),
+(2, NOW(), 'utilisateur9', 'Daniel', 'Thomas', '2021 Boulevard Haussmann', '$2y$10$lxeSumVQvBQ2i4u9EH2a1OnmfvKnWtpSzbAQ6H/f8e/nSOvJJZ8NW', 'daniel.thomas@example.com', '/images/avatars/utilisateur9/img_user.jpg', '8899001122'),
+(2, NOW(), 'utilisateur10', 'Emily', 'Jackson', '2223 Avenue Victor Hugo', '$2y$10$i2.MtLwCRowHpdxbPB//EeGHEOD0jlKH.7T5/5UIFiFy/0WZedspW', 'emily.jackson@example.com', '/images/avatars/utilisateur10/img_user.jpg', '9900112233'),
+(2, NOW(), 'utilisateur11', 'Sophie', 'Martin', '2325 Rue Saint-Antoine', '$2y$10$b.rhvW.vknrfCgRNFIIp3Oha/Hq1.jSpn90DUnPxPW3/kJdqtbGCK', 'sophie.martin@example.com', '/images/avatars/utilisateur11/img_user.jpg', '1122334455'),
+(2, NOW(), 'utilisateur12', 'William', 'Thompson', '2427 Avenue des Ternes', '$2y$10$HUqNXYpyo2uP1E.tgR/z8uU5O4n365JBiUH5p7qB2le5gO0.infHe', 'william.thompson@example.com', '/images/avatars/utilisateur12/img_user.jpg', '2244668899'),
+(2, NOW(), 'utilisateur13', 'Charlotte', 'Clark', '2529 Rue de la Pompe', '$2y$10$SuYzFoQdjROkK6xOaBm1L.4higlSCJX5Z0QVItBjkx5/qUMsX9tTS', 'charlotte.clark@example.com', '/images/avatars/utilisateur13/img_user.jpg', '3366990022'),
+(2, NOW(), 'utilisateur14', 'James', 'White', '2631 Boulevard Malesherbes', '$2y$10$21dxDMovRzObUfIO1Ykh9eiOnW0tjbZE7JbgnZMLWlA3kJ/BZEVuy', 'james.white@example.com', '/images/avatars/utilisateur14/img_user.jpg', '4488112233'),
+(2, NOW(), 'utilisateur15', 'Ava', 'Hall', '2733 Avenue de la République', '$2y$10$E4NL1lLTNfptHjeozX2x9OYji2H5uldcvrEd7QaezvmAWnWc7XGFK', 'ava.hall@example.com', '/images/avatars/utilisateur15/img_user.jpg', '5511223344'),
+(2, NOW(), 'utilisateur16', 'Noah', 'Lewis', '2835 Rue de Passy', '$2y$10$xjrpINALKuGkFLKTNlMcVOk9NoYBfoc6yA4Pvt66mMGHykPPLlKzW', 'noah.lewis@example.com', '/images/avatars/utilisateur16/img_user.jpg', '6633445566'),
+(2, NOW(), 'utilisateur17', 'Mia', 'Adams', '2937 Boulevard Saint-Germain', '$2y$10$rQuvGd48.B6EmoYAl7d2PeEMvSMQsDduQPvcWzxbtLSGVL/066hpW', 'mia.adams@example.com', '/images/avatars/utilisateur17/img_user.jpg', '7755668899'),
+(2, NOW(), 'utilisateur18', 'Benjamin', 'Young', '3039 Rue du Bac', '$2y$10$wMFNjwJJPkAXYF31Ot3Ko.L8acwtiCOx2waqQKzqQ8z/PJkLuDz1i', 'benjamin.young@example.com', '/images/avatars/utilisateur18/img_user.jpg', '8877665544'),
+(2, NOW(), 'utilisateur19', 'Ella', 'Harris', '3141 Avenue Marceau', '$2y$10$q4G7cKwWSFvxcTf95L72s./aqtuN0h.3gcc3w4pfFX.EeUgDIZAea', 'ella.harris@example.com', '/images/avatars/utilisateur19/img_user.jpg', '9900887766'),
+(2, NOW(), 'utilisateur20', 'Lucas', 'King', '3243 Rue de Sèvres', '$2y$10$U3B8F76RFmcsQdTP.QxApeLQHBkH1HSKzISz5ndXS9jNpF8uc4dQG', 'lucas.king@example.com', '/images/avatars/utilisateur20/img_user.jpg', '0011223344');
+
+--
+-- Déchargement des données de la table Vehicules
+--
+INSERT INTO Vehicules (plaque, image, marque, modele, annee, disponible, latitude, longitude, ip) VALUES
+("GH209RH", '/images/vehicules/GH209RH/img_vehicule.png', 'Tesla', 'Model S', 2023, 1, 48.358844, 3.294351, '192.168.74.194'),
+("PH940OP", '/images/vehicules/PH940OP/img_vehicule.png', 'Nissan', 'Leaf', 2022, 1, 48.8566, 6.3522, '127.0.0.1'),
+("XD738UJ", '/images/vehicules/XD738UJ/img_vehicule.png', 'BMW', 'i3 S', 2024, 0, 48.6566, 2.3522, '127.0.0.1'),
+("WSD754YH", '/images/vehicules/WSD754YH/img_vehicule.png', 'Toyota', 'Prius', 2023, 1, 48.0566, 3.3522, '127.0.0.1'),
+("IO334PO", '/images/vehicules/IO334PO/img_vehicule.png', 'Chevrolet', 'Bolt', 2023, 0, 48.7566, 7.3522, '127.0.0.1'),
+('AA123AA', '/images/vehicules/AA123AA/img_vehicule.png', 'Renault', 'Clio', 2018, 1, 48.558844, 2.294351, '127.0.0.1'),
+('BB456BB', '/images/vehicules/BB456BB/img_vehicule.png', 'Peugeot', '208', 2016, 1, 48.2566, 1.3522, '127.0.0.1'),
+('CC789CC', '/images/vehicules/CC789CC/img_vehicule.png', 'Volkswagen', 'Golf', 2019, 1, 48.8566, 9.3522, '127.0.0.1'),
+('DD012DD', '/images/vehicules/DD012DD/img_vehicule.png', 'Ford', 'Fiesta', 2015, 1, 49.8566, 6.3522, '127.0.0.1'),
+('EE345EE', '/images/vehicules/EE345EE/img_vehicule.png', 'Toyota', 'Yaris', 2017, 1, 45.8566, 4.3522, '127.0.0.1'),
+('FF678FF', '/images/vehicules/FF678FF/img_vehicule.png', 'Audi', 'A3', 2014, 1, 42.8566, 2.3522, '127.0.0.1'),
+('GG901GG', '/images/vehicules/GG901GG/img_vehicule.png', 'BMW', 'Series 1', 2020, 1, 46.8566, 3.3522, '127.0.0.1'),
+('HH234HH', '/images/vehicules/HH234HH/img_vehicule.png', 'Mercedes-Benz', 'A-Class', 2019, 1, 48.8566, 2.3522, '127.0.0.1'),
+('II567II', '/images/vehicules/II567II/img_vehicule.png', 'Hyundai', 'i30', 2016, 1, 50.8566, 7.3522, '127.0.0.1'),
+('JJ890JJ', '/images/vehicules/JJ890JJ/img_vehicule.png', 'Kia', 'Rio', 2017, 1, 49.8566, 4.3522, '127.0.0.1'),
+('KK123KK', '/images/vehicules/KK123KK/img_vehicule.png', 'Nissan', 'Micra', 2018, 1, 44.8566, 2.3522, '127.0.0.1'),
+('LL456LL', '/images/vehicules/LL456LL/img_vehicule.png', 'Fiat', '500', 2015, 1, 43.8566, 2.6522, '127.0.0.1'),
+('MM789MM', '/images/vehicules/MM789MM/img_vehicule.png', 'Skoda', 'Fabia', 2019, 1, 47.8566, 2.8522, '127.0.0.1'),
+('NN012NN', '/images/vehicules/NN012NN/img_vehicule.png', 'Volvo', 'V40', 2016, 1, 45.8566, 2.4522, '127.0.0.1'),
+('OO345OO', '/images/vehicules/OO345OO/img_vehicule.png', 'Seat', 'Ibiza', 2017, 1, 48.8566, 2.3522, '127.0.0.1'),
+('PP678PP', '/images/vehicules/PP678PP/img_vehicule.png', 'Mini', 'Cooper', 2020, 1, 43.8566, 2.7522, '127.0.0.1'),
+('QQ901QQ', '/images/vehicules/QQ901QQ/img_vehicule.png', 'Citroen', 'C3', 2018, 1, 44.8566, 2.2522, '127.0.0.1'),
+('RR234RR', '/images/vehicules/RR234RR/img_vehicule.png', 'Dacia', 'Sandero', 2015, 1, 45.8566, 4.3522, '127.0.0.1'),
+('SS567SS', '/images/vehicules/SS567SS/img_vehicule.png', 'Land Rover', 'Evoque', 2021, 1, 46.8566, 8.3522, '127.0.0.1'),
+('TT890TT', '/images/vehicules/TT890TT/img_vehicule.png', 'Jeep', 'Renegade', 2019, 1, 47.8566, 2.9522, '127.0.0.1');
+--
+-- Déchargement des données de la table Reservations
+--
+INSERT INTO Reservations (id_user, id_vehicule, title, start, end) VALUES
+(1, 1, 'Reservation 1', '2024-06-01 08:00:00', '2024-06-01 10:00:00'),
+(2, 2, 'Reservation 2', '2024-06-02 09:00:00', '2024-06-02 11:00:00'),
+(3, 3, 'Reservation 3', '2024-06-03 10:00:00', '2024-06-03 12:00:00'),
+(4, 4, 'Reservation 4', '2024-06-04 11:00:00', '2024-06-04 13:00:00'),
+(5, 5, 'Reservation 5', '2024-06-05 12:00:00', '2024-06-05 14:00:00'),
+(6, 6, 'Reservation 6', '2024-06-06 13:00:00', '2024-06-06 15:00:00'),
+(7, 7, 'Reservation 7', '2024-06-07 14:00:00', '2024-06-07 16:00:00'),
+(8, 8, 'Reservation 8', '2024-06-08 15:00:00', '2024-06-08 17:00:00'),
+(9, 9, 'Reservation 9', '2024-06-09 16:00:00', '2024-06-09 18:00:00'),
+(10, 10, 'Reservation 10', '2024-06-10 17:00:00', '2024-06-10 19:00:00'),
+(1, 2, 'Reservation 11', '2024-07-01 08:00:00', '2024-07-01 10:00:00'),
+(2, 3, 'Reservation 12', '2024-07-02 09:00:00', '2024-07-02 11:00:00'),
+(3, 4, 'Reservation 13', '2024-07-03 10:00:00', '2024-07-03 12:00:00'),
+(4, 5, 'Reservation 14', '2024-07-04 11:00:00', '2024-07-04 13:00:00'),
+(5, 6, 'Reservation 15', '2024-07-05 12:00:00', '2024-07-05 14:00:00'),
+(6, 7, 'Reservation 16', '2024-07-06 13:00:00', '2024-07-06 15:00:00'),
+(7, 8, 'Reservation 17', '2024-07-07 14:00:00', '2024-07-07 16:00:00'),
+(8, 9, 'Reservation 18', '2024-07-08 15:00:00', '2024-07-08 17:00:00'),
+(9, 10, 'Reservation 19', '2024-07-09 16:00:00', '2024-07-09 18:00:00'),
+(10, 1, 'Reservation 20', '2024-07-10 17:00:00', '2024-07-10 19:00:00'),
+(1, 3, 'Reservation 21', '2024-08-01 08:00:00', '2024-08-01 10:00:00'),
+(2, 4, 'Reservation 22', '2024-08-02 09:00:00', '2024-08-02 11:00:00'),
+(3, 5, 'Reservation 23', '2024-08-03 10:00:00', '2024-08-03 12:00:00'),
+(4, 6, 'Reservation 24', '2024-08-04 11:00:00', '2024-08-04 13:00:00'),
+(5, 7, 'Reservation 25', '2024-08-05 12:00:00', '2024-08-05 14:00:00'),
+(6, 8, 'Reservation 26', '2024-08-06 13:00:00', '2024-08-06 15:00:00'),
+(7, 9, 'Reservation 27', '2024-08-07 14:00:00', '2024-08-07 16:00:00'),
+(8, 10, 'Reservation 28', '2024-08-08 15:00:00', '2024-08-08 17:00:00'),
+(9, 1, 'Reservation 29', '2024-08-09 16:00:00', '2024-08-09 18:00:00'),
+(10, 2, 'Reservation 30', '2024-08-10 17:00:00', '2024-08-10 19:00:00');
\ No newline at end of file
diff --git a/sql/CREATE TABLES.sql b/sql/CREATE TABLES.sql
deleted file mode 100644
index 75a43ad..0000000
--- a/sql/CREATE TABLES.sql
+++ /dev/null
@@ -1,122 +0,0 @@
-use CARIA;
-DROP TABLE IF EXISTS Reservations,Clients,Vehicules;
-
---
--- Structure de la table Clients
---
-CREATE TABLE Clients (
- id int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
- privilege int(11) DEFAULT 2,
- dateenregistre timestamp NOT NULL DEFAULT current_timestamp(),
- pseudo varchar(25),
- prenom varchar(25) DEFAULT NULL,
- nom varchar(25) DEFAULT NULL,
- adresse varchar(50) DEFAULT NULL,
- phone varchar(15) DEFAULT NULL,
- email varchar(30) DEFAULT NULL,
- mdp varchar(32) NOT NULL,
- avatar varchar(250) DEFAULT '/images/avatars/img_user.jpg'
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
-
---
--- Structure de la table Vehicules
---
-CREATE TABLE Vehicules (
- id int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
- plaque varchar(9) NOT NULL,
- marque varchar(50) DEFAULT NULL,
- modele varchar(50) DEFAULT NULL,
- annee int(4) DEFAULT NULL,
- image varchar(250) NOT NULL DEFAULT '/images/vehicules/img_voiture.png',
- disponible tinyint(1) NOT NULL DEFAULT 0,
- latitude decimal(9,6) NOT NULL DEFAULT 48.000000,
- longitude decimal(9,6) NOT NULL DEFAULT 2.000000,
- ip varchar(40) NOT NULL DEFAULT '127.0.0.1'
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
-
---
--- Structure de la table Reservations
---
-CREATE TABLE Reservations (
- id int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
- id_user int(11) DEFAULT NULL,
- id_vehicule int(11) DEFAULT NULL,
- title varchar(255) DEFAULT NULL,
- start timestamp NULL DEFAULT NULL,
- end timestamp NULL DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
-
-
-
-
-
-use CARIA;
---
--- Déchargement des données de la table Clients
---
-INSERT INTO Clients (privilege, dateenregistre, pseudo, prenom, nom, adresse, mdp, email, avatar, phone) VALUES
-(1, '2016-09-11 22:00:00', 'sa', 'sa', 'pc', 'sa', 'sa', 'sa@gmail.com', '/images/avatars/sa/img_user.jpg', "0658293476"),
-(2, NOW(), 'utilisateur1', 'John', 'Doe', '123 Rue de Paris', 'motdepasse1', 'john.doe@example.com', '/images/avatars/utilisateur1/img_user.jpg', '0123456789'),
-(2, NOW(), 'utilisateur2', 'Alice', 'Smith', '456 Avenue des Champs-Élysées', 'motdepasse2', 'alice.smith@example.com', '/images/avatars/utilisateur2/img_user.jpg', '9876543210'),
-(2, NOW(), 'utilisateur3', 'Michael', 'Johnson', '789 Boulevard Saint-Michel', 'motdepasse3', 'michael.johnson@example.com', '/images/avatars/utilisateur3/img_user.jpg', '1234567890'),
-(2, NOW(), 'utilisateur4', 'Emma', 'Brown', '1011 Rue de Rivoli', 'motdepasse4', 'emma.brown@example.com', '/images/avatars/utilisateur4/img_user.jpg', '0987654321'),
-(2, NOW(), 'utilisateur5', 'David', 'Wilson', '1213 Rue du Faubourg Saint-Honoré', 'motdepasse5', 'david.wilson@example.com', '/images/avatars/utilisateur5/img_user.jpg', '1122334455'),
-(2, NOW(), 'utilisateur6', 'Sophia', 'Martinez', '1415 Avenue Montaigne', 'motdepasse6', 'sophia.martinez@example.com', '/images/avatars/utilisateur6/img_user.jpg', '5544332211'),
-(2, NOW(), 'utilisateur7', 'Matthew', 'Anderson', '1617 Avenue de la Grande Armée', 'motdepasse7', 'matthew.anderson@example.com', '/images/avatars/utilisateur7/img_user.jpg', '6677889900'),
-(2, NOW(), 'utilisateur8', 'Olivia', 'Taylor', '1819 Rue de la Paix', 'motdepasse8', 'olivia.taylor@example.com', '/images/avatars/utilisateur8/img_user.jpg', '7788990011'),
-(2, NOW(), 'utilisateur9', 'Daniel', 'Thomas', '2021 Boulevard Haussmann', 'motdepasse9', 'daniel.thomas@example.com', '/images/avatars/utilisateur9/img_user.jpg', '8899001122'),
-(2, NOW(), 'utilisateur10', 'Emily', 'Jackson', '2223 Avenue Victor Hugo', 'motdepasse10', 'emily.jackson@example.com', '/images/avatars/utilisateur10/img_user.jpg', '9900112233'),
-(2, NOW(), 'utilisateur11', 'Sophie', 'Martin', '2325 Rue Saint-Antoine', 'motdepasse11', 'sophie.martin@example.com', '/images/avatars/utilisateur11/img_user.jpg', '1122334455'),
-(2, NOW(), 'utilisateur12', 'William', 'Thompson', '2427 Avenue des Ternes', 'motdepasse12', 'william.thompson@example.com', '/images/avatars/utilisateur12/img_user.jpg', '2244668899'),
-(2, NOW(), 'utilisateur13', 'Charlotte', 'Clark', '2529 Rue de la Pompe', 'motdepasse13', 'charlotte.clark@example.com', '/images/avatars/utilisateur13/img_user.jpg', '3366990022'),
-(2, NOW(), 'utilisateur14', 'James', 'White', '2631 Boulevard Malesherbes', 'motdepasse14', 'james.white@example.com', '/images/avatars/utilisateur14/img_user.jpg', '4488112233'),
-(2, NOW(), 'utilisateur15', 'Ava', 'Hall', '2733 Avenue de la République', 'motdepasse15', 'ava.hall@example.com', '/images/avatars/utilisateur15/img_user.jpg', '5511223344'),
-(2, NOW(), 'utilisateur16', 'Noah', 'Lewis', '2835 Rue de Passy', 'motdepasse16', 'noah.lewis@example.com', '/images/avatars/utilisateur16/img_user.jpg', '6633445566'),
-(2, NOW(), 'utilisateur17', 'Mia', 'Adams', '2937 Boulevard Saint-Germain', 'motdepasse17', 'mia.adams@example.com', '/images/avatars/utilisateur17/img_user.jpg', '7755668899'),
-(2, NOW(), 'utilisateur18', 'Benjamin', 'Young', '3039 Rue du Bac', 'motdepasse18', 'benjamin.young@example.com', '/images/avatars/utilisateur18/img_user.jpg', '8877665544'),
-(2, NOW(), 'utilisateur19', 'Ella', 'Harris', '3141 Avenue Marceau', 'motdepasse19', 'ella.harris@example.com', '/images/avatars/utilisateur19/img_user.jpg', '9900887766'),
-(2, NOW(), 'utilisateur20', 'Lucas', 'King', '3243 Rue de Sèvres', 'motdepasse20', 'lucas.king@example.com', '/images/avatars/utilisateur20/img_user.jpg', '0011223344');
-
---
--- Déchargement des données de la table Vehicules
---
-INSERT INTO Vehicules (plaque, image, marque, modele, annee, disponible, latitude, longitude, ip) VALUES
-("GH209RH", '/images/vehicules/GH209RH/img_voiture.png', 'Tesla', 'Model S', 2023, 1, 48.358844, 3.294351, '192.168.74.194'),
-("PH940OP", '/images/vehicules/PH940OP/img_voiture.png', 'Nissan', 'Leaf', 2022, 1, 48.8566, 6.3522, '127.0.0.1'),
-("XD738UJ", '/images/vehicules/XD738UJ/img_voiture.png', 'BMW', 'i3 S', 2024, 0, 48.6566, 2.3522, '127.0.0.1'),
-("WSD754YH", '/images/vehicules/WSD754YH/img_voiture.png', 'Toyota', 'Prius', 2023, 1, 48.0566, 3.3522, '127.0.0.1'),
-("IO334PO", '/images/vehicules/IO334PO/img_voiture.png', 'Chevrolet', 'Bolt', 2023, 0, 48.7566, 7.3522, '127.0.0.1'),
-('AA123AA', '/images/vehicules/AA123AA/img_voiture.png', 'Renault', 'Clio', 2018, 1, 48.558844, 2.294351, '127.0.0.1'),
-('BB456BB', '/images/vehicules/BB456BB/img_voiture.png', 'Peugeot', '208', 2016, 1, 48.2566, 1.3522, '127.0.0.1'),
-('CC789CC', '/images/vehicules/CC789CC/img_voiture.png', 'Volkswagen', 'Golf', 2019, 1, 48.8566, 9.3522, '127.0.0.1'),
-('DD012DD', '/images/vehicules/DD012DD/img_voiture.png', 'Ford', 'Fiesta', 2015, 1, 49.8566, 6.3522, '127.0.0.1'),
-('EE345EE', '/images/vehicules/EE345EE/img_voiture.png', 'Toyota', 'Yaris', 2017, 1, 45.8566, 4.3522, '127.0.0.1'),
-('FF678FF', '/images/vehicules/FF678FF/img_voiture.png', 'Audi', 'A3', 2014, 1, 42.8566, 2.3522, '127.0.0.1'),
-('GG901GG', '/images/vehicules/GG901GG/img_voiture.png', 'BMW', 'Series 1', 2020, 1, 46.8566, 3.3522, '127.0.0.1'),
-('HH234HH', '/images/vehicules/HH234HH/img_voiture.png', 'Mercedes-Benz', 'A-Class', 2019, 1, 48.8566, 2.3522, '127.0.0.1'),
-('II567II', '/images/vehicules/II567II/img_voiture.png', 'Hyundai', 'i30', 2016, 1, 50.8566, 7.3522, '127.0.0.1'),
-('JJ890JJ', '/images/vehicules/JJ890JJ/img_voiture.png', 'Kia', 'Rio', 2017, 1, 49.8566, 4.3522, '127.0.0.1'),
-('KK123KK', '/images/vehicules/KK123KK/img_voiture.png', 'Nissan', 'Micra', 2018, 1, 44.8566, 2.3522, '127.0.0.1'),
-('LL456LL', '/images/vehicules/LL456LL/img_voiture.png', 'Fiat', '500', 2015, 1, 43.8566, 2.6522, '127.0.0.1'),
-('MM789MM', '/images/vehicules/MM789MM/img_voiture.png', 'Skoda', 'Fabia', 2019, 1, 47.8566, 2.8522, '127.0.0.1'),
-('NN012NN', '/images/vehicules/NN012NN/img_voiture.png', 'Volvo', 'V40', 2016, 1, 45.8566, 2.4522, '127.0.0.1'),
-('OO345OO', '/images/vehicules/OO345OO/img_voiture.png', 'Seat', 'Ibiza', 2017, 1, 48.8566, 2.3522, '127.0.0.1'),
-('PP678PP', '/images/vehicules/PP678PP/img_voiture.png', 'Mini', 'Cooper', 2020, 1, 43.8566, 2.7522, '127.0.0.1'),
-('QQ901QQ', '/images/vehicules/QQ901QQ/img_voiture.png', 'Citroen', 'C3', 2018, 1, 44.8566, 2.2522, '127.0.0.1'),
-('RR234RR', '/images/vehicules/RR234RR/img_voiture.png', 'Dacia', 'Sandero', 2015, 1, 45.8566, 4.3522, '127.0.0.1'),
-('SS567SS', '/images/vehicules/SS567SS/img_voiture.png', 'Land Rover', 'Evoque', 2021, 1, 46.8566, 8.3522, '127.0.0.1'),
-('TT890TT', '/images/vehicules/TT890TT/img_voiture.png', 'Jeep', 'Renegade', 2019, 1, 47.8566, 2.9522, '127.0.0.1');
---
--- Déchargement des données de la table Reservations
---
-INSERT INTO Reservations (id_user, id_vehicule, title, start, end)
-SELECT
- FLOOR(RAND() * (SELECT MAX(id) FROM Clients)) + 1 AS id_user,
- FLOOR(RAND() * (SELECT MAX(id) FROM Vehicules)) + 1 AS id_vehicule,
- CONCAT('Réservation ', FLOOR(RAND() * 100)) AS title,
- NOW() + INTERVAL FLOOR(RAND() * 30) DAY AS start,
- NOW() + INTERVAL FLOOR(RAND() * 30) DAY + INTERVAL FLOOR(RAND() * 10) HOUR AS end
-FROM
- INFORMATION_SCHEMA.TABLES AS t1,
- INFORMATION_SCHEMA.TABLES AS t2
-LIMIT 30;
diff --git a/sql/INDEX TABLES.sql b/sql/INDEX TABLES.sql
deleted file mode 100644
index 0562aa0..0000000
--- a/sql/INDEX TABLES.sql
+++ /dev/null
@@ -1,17 +0,0 @@
-use CARIA;
---
--- Index pour la table Reservations
---
-ALTER TABLE Reservations
- ADD UNIQUE KEY uc_vehicule_reservation (id_vehicule,start,end),
- ADD UNIQUE KEY chevauchement_reservation (id_vehicule,start),
- ADD KEY id_user (id_user),
- ADD KEY id_vehicule (id_vehicule) USING BTREE;
-
---
--- Contraintes pour la table Reservations
---
-ALTER TABLE Reservations
- ADD CONSTRAINT Reservations_idfk_1 FOREIGN KEY (id_vehicule) REFERENCES Vehicules (id),
- ADD CONSTRAINT Reservations_idfk_2 FOREIGN KEY (id) REFERENCES Clients (id);
-COMMIT;
diff --git a/vue/connexion.html b/vue/connexion.html
index c5cd2a6..e6fd9ca 100644
--- a/vue/connexion.html
+++ b/vue/connexion.html
@@ -31,12 +31,10 @@
-
La plateforme compte membres.
-
véhicules disponibles à la réservation sur la plateforme.
-
est le dernier membre inscrit.
+
diff --git a/vue/edit_profile_view.html b/vue/edit_profile_view.html
index 7b8cbd1..4651042 100644
--- a/vue/edit_profile_view.html
+++ b/vue/edit_profile_view.html
@@ -5,7 +5,7 @@