diff --git a/config/connexion_sql.php b/config/connexion_sql.php new file mode 100644 index 0000000..51ce3d2 --- /dev/null +++ b/config/connexion_sql.php @@ -0,0 +1,44 @@ + "SET NAMES utf8")); +} +catch(Exception $e) +{ + die('Erreur : '.$e->getMessage()); +} +# Constantes +define('VISITEUR',1); +define('INSCRIT',2); +define('MODO',3); +define('ADMIN',4); +define('ERR_IS_CO','Vous ne pouvez pas accéder à cette page si vous n\'êtes pas connecté'); +session_start(); +# Connexion et initialisation des variables +$lvl_session = isset($_SESSION['privilege_session']) ? (int)$_SESSION['privilege_session'] : 1; +$id_session = isset($_SESSION['id_session']) ? (int)$_SESSION['id_session'] : 0; +$pseudo_session = isset($_SESSION['pseudo_session']) ? $_SESSION['pseudo_session'] : ''; + +function verifierAcces($min_privilege_requis) { + // Vérifier si l'utilisateur est connecté + if (!isset($_SESSION['id_session'])) { + // Afficher la page d'erreur en incluant le fichier de vue + $message = "Vous devez être connecté pour accéder à cette page."; + include 'erreur.php'; + exit(); // Arrêter l'exécution du script après affichage de l'erreur + } + + // Vérifier le privilège de l'utilisateur + $privilege_utilisateur = isset($_SESSION['privilege_session']) ? (int)$_SESSION['privilege_session'] : VISITEUR; + + // Vérifier si le privilège de l'utilisateur est suffisant pour accéder à la page + if ($privilege_utilisateur < $min_privilege_requis) { + // Afficher la page d'erreur en incluant le fichier de vue + $message = "Vous n'avez pas les droits d'accès nécessaires pour accéder à cette page."; + include 'erreur.php'; + exit(); // Arrêter l'exécution du script après affichage de l'erreur + } +} + +?> \ No newline at end of file diff --git a/config/images/CARIA.png b/config/images/CARIA.png new file mode 100644 index 0000000..8ee3386 Binary files /dev/null and b/config/images/CARIA.png differ diff --git a/config/images/Thumbs.db b/config/images/Thumbs.db new file mode 100644 index 0000000..1a0e301 Binary files /dev/null and b/config/images/Thumbs.db differ diff --git a/config/images/bg.jpg b/config/images/bg.jpg new file mode 100644 index 0000000..3109bac Binary files /dev/null and b/config/images/bg.jpg differ diff --git a/config/images/calendrier.png b/config/images/calendrier.png new file mode 100644 index 0000000..0648853 Binary files /dev/null and b/config/images/calendrier.png differ diff --git a/config/images/favicon.png b/config/images/favicon.png new file mode 100644 index 0000000..aa0b0a1 Binary files /dev/null and b/config/images/favicon.png differ diff --git a/config/images/footer.jpg b/config/images/footer.jpg new file mode 100644 index 0000000..54f5249 Binary files /dev/null and b/config/images/footer.jpg differ diff --git a/config/images/gallery_loading.gif b/config/images/gallery_loading.gif new file mode 100644 index 0000000..641a269 Binary files /dev/null and b/config/images/gallery_loading.gif differ diff --git a/config/images/header.jpg b/config/images/header.jpg new file mode 100644 index 0000000..3f71ee9 Binary files /dev/null and b/config/images/header.jpg differ diff --git a/config/images/logo.png b/config/images/logo.png new file mode 100644 index 0000000..2e623d3 Binary files /dev/null and b/config/images/logo.png differ diff --git a/controleur/connexion.php b/controleur/connexion.php new file mode 100644 index 0000000..db54195 --- /dev/null +++ b/controleur/connexion.php @@ -0,0 +1,82 @@ +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 { + // Afficher un message d'erreur en cas de connexion échouée + require './vue/connexion.html'; + displayErrorMessage(); + } +} +// Fonction pour connecter l'utilisateur +function connectUser($userData) { + $_SESSION['pseudo_session'] = $userData['pseudo']; + $_SESSION['privilege_session'] = $userData['privilege']; + $_SESSION['id_session'] = $userData['id']; + // Redirection vers la page principale + header('Location: index.php'); + exit(); +} +// Fonction pour afficher un message d'erreur +function displayErrorMessage() { + echo ''; +} +// Fonction pour afficher un message de succès +function displaySuccessMessage() { + echo ''; +} +?> \ No newline at end of file diff --git a/controleur/gestion.php b/controleur/gestion.php new file mode 100644 index 0000000..4263727 --- /dev/null +++ b/controleur/gestion.php @@ -0,0 +1,64 @@ + + alert("Ajout du véhicule terminé.\n\n Le véhicule ' . addslashes(htmlspecialchars($_POST['plaque'])) . ' a été ajouté au véhicule de la plateforme."); + '; + // 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 ' + '; + } +} +require './vue/gestion.html'; +?> \ No newline at end of file diff --git a/controleur/home.php b/controleur/home.php new file mode 100644 index 0000000..732c083 --- /dev/null +++ b/controleur/home.php @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/controleur/inscription.php b/controleur/inscription.php new file mode 100644 index 0000000..4dfa3e2 --- /dev/null +++ b/controleur/inscription.php @@ -0,0 +1,135 @@ +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)) { + $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."; + } + // Validation de l'email + if (!isEmailAvailable($email)) { + $errors[] = "Votre adresse email est déjà utilisée par un membre."; + } + // Validation de l'avatar s'il est uploadé + if (!empty($_FILES['avatar']['size'])) { + if (!isValidAvatarExtension($_FILES['avatar']['name'], $extensions_valides)) { + $errors[] = "Extension de l'avatar incorrecte."; + } + } + if (empty($errors)) { + $userData = [ + 'pseudo' => $pseudo, + 'email' => $email, + // Autres champs du formulaire + ]; +require_once './vue/inscription.html'; + 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 new file mode 100644 index 0000000..060f1d9 --- /dev/null +++ b/controleur/profil.php @@ -0,0 +1,147 @@ +Cette action est impossible

'; +} +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'; + } else { + $i = 0; + $pass = /*md5*/($_POST['password']); + $confirm = /*md5*/($_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++; + } + if (!empty($_FILES['avatar']['size'])) { + $extension_upload = strtolower(substr(strrchr($_FILES['avatar']['name'], '.'), 1)); + if (!in_array($extension_upload, $extensions_valides)) { + $i++; + $avatar_erreur3 = "Extension de l'avatar incorrecte"; + } + } + if ($i == 0) { + 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 + require_once './vue/edit_profile_view.html'; + displayModificationProfilSuccessMessage(); + 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); + } + } +} +// Fonction pour afficher un message de succès +function displayModificationProfilSuccessMessage() { + echo ''; +} +function displayModificationProfilErrorMessage($i, $avatar_erreur3 = null, $mdp_erreur = null) { + echo ''; +} +function displayDeleteProfilSuccessMessage() { + echo ''; +} +?> \ No newline at end of file diff --git a/controleur/send_mail.php b/controleur/send_mail.php new file mode 100644 index 0000000..9b09011 --- /dev/null +++ b/controleur/send_mail.php @@ -0,0 +1,26 @@ + \ No newline at end of file diff --git a/controleur/send_position.php b/controleur/send_position.php new file mode 100644 index 0000000..172accf --- /dev/null +++ b/controleur/send_position.php @@ -0,0 +1,19 @@ +prepare("UPDATE Vehicules SET latitude = :latitude, longitude = :longitude WHERE id = :id"); + // Liage des valeurs des données POST aux paramètres de la requête SQL + $stmt->bindParam(':id', $_POST['id']); + $stmt->bindParam(':latitude', $_POST['latitude']); + $stmt->bindParam(':longitude', $_POST['longitude']); + // Exécution de la requête SQL + $stmt->execute(); + echo "Données POST mises à jour avec succès dans la base de données."; + // Fermeture de la connexion à la base de données + $bdd = null; + // Sauvegarde des données POST dans un fichier + $file_path = 'logs/post_data_location.txt'; + $post_data = json_encode($_POST); + $file_handle = fopen($file_path, 'a'); + fwrite($file_handle, $post_data . PHP_EOL); + fclose($file_handle); +?> \ No newline at end of file diff --git a/controleur/vehicule.php b/controleur/vehicule.php new file mode 100644 index 0000000..a83f69e --- /dev/null +++ b/controleur/vehicule.php @@ -0,0 +1,61 @@ + 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/css/style.css b/css/style.css new file mode 100644 index 0000000..394b788 --- /dev/null +++ b/css/style.css @@ -0,0 +1,17 @@ +.bg1 { + background:#E8F2F9; + /*background-image: url(../config/images/bg.jpg); + background-repeat: no-repeat; + background-position: center; + background-size: cover; + background-attachment: scroll;*/ +} +.disponible { + color: green; +} +.indisponible { + color: red; +} +#map{ /* la carte DOIT avoir une hauteur sinon elle n'apparaît pas */ + height:400px; +} \ No newline at end of file diff --git a/deconnexion.php b/deconnexion.php new file mode 100644 index 0000000..4b6b0f1 --- /dev/null +++ b/deconnexion.php @@ -0,0 +1,16 @@ + +
+
+
+

Déconnexion réussie!

+
+
+

A bientôt

+

Vous êtes à présent déconnecté

+

Revenir à l'écran principal

+
+
+
\ No newline at end of file diff --git a/erreur.php b/erreur.php new file mode 100644 index 0000000..defc17d --- /dev/null +++ b/erreur.php @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/gestion.php b/gestion.php new file mode 100644 index 0000000..c04fc55 --- /dev/null +++ b/gestion.php @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/images/avatars/Thumbs.db b/images/avatars/Thumbs.db new file mode 100644 index 0000000..808e96a Binary files /dev/null and b/images/avatars/Thumbs.db differ diff --git a/images/avatars/img_user.jpg b/images/avatars/img_user.jpg new file mode 100644 index 0000000..17e94bd Binary files /dev/null and b/images/avatars/img_user.jpg differ diff --git a/images/avatars/sa/Thumbs.db b/images/avatars/sa/Thumbs.db new file mode 100644 index 0000000..1928a33 Binary files /dev/null and b/images/avatars/sa/Thumbs.db differ diff --git a/images/avatars/sa/img_user.jpg b/images/avatars/sa/img_user.jpg new file mode 100644 index 0000000..9ee0e75 Binary files /dev/null and b/images/avatars/sa/img_user.jpg differ diff --git a/images/avatars/utilisateur1/Thumbs.db b/images/avatars/utilisateur1/Thumbs.db new file mode 100644 index 0000000..d9aa91a Binary files /dev/null and b/images/avatars/utilisateur1/Thumbs.db differ diff --git a/images/avatars/utilisateur1/img_user.jpg b/images/avatars/utilisateur1/img_user.jpg new file mode 100644 index 0000000..17e94bd Binary files /dev/null and b/images/avatars/utilisateur1/img_user.jpg differ diff --git a/images/avatars/utilisateur10/Thumbs.db b/images/avatars/utilisateur10/Thumbs.db new file mode 100644 index 0000000..674f88e Binary files /dev/null and b/images/avatars/utilisateur10/Thumbs.db differ diff --git a/images/avatars/utilisateur10/img_user.jpg b/images/avatars/utilisateur10/img_user.jpg new file mode 100644 index 0000000..17e94bd Binary files /dev/null and b/images/avatars/utilisateur10/img_user.jpg differ diff --git a/images/avatars/utilisateur11/Thumbs.db b/images/avatars/utilisateur11/Thumbs.db new file mode 100644 index 0000000..61b9c2f Binary files /dev/null and b/images/avatars/utilisateur11/Thumbs.db differ diff --git a/images/avatars/utilisateur11/img_user.jpg b/images/avatars/utilisateur11/img_user.jpg new file mode 100644 index 0000000..17e94bd Binary files /dev/null and b/images/avatars/utilisateur11/img_user.jpg differ diff --git a/images/avatars/utilisateur12/Thumbs.db b/images/avatars/utilisateur12/Thumbs.db new file mode 100644 index 0000000..882d134 Binary files /dev/null and b/images/avatars/utilisateur12/Thumbs.db differ diff --git a/images/avatars/utilisateur12/img_user.jpg b/images/avatars/utilisateur12/img_user.jpg new file mode 100644 index 0000000..17e94bd Binary files /dev/null and b/images/avatars/utilisateur12/img_user.jpg differ diff --git a/images/avatars/utilisateur13/Thumbs.db b/images/avatars/utilisateur13/Thumbs.db new file mode 100644 index 0000000..9667c81 Binary files /dev/null and b/images/avatars/utilisateur13/Thumbs.db differ diff --git a/images/avatars/utilisateur13/img_user.jpg b/images/avatars/utilisateur13/img_user.jpg new file mode 100644 index 0000000..17e94bd Binary files /dev/null and b/images/avatars/utilisateur13/img_user.jpg differ diff --git a/images/avatars/utilisateur14/Thumbs.db b/images/avatars/utilisateur14/Thumbs.db new file mode 100644 index 0000000..6d92e56 Binary files /dev/null and b/images/avatars/utilisateur14/Thumbs.db differ diff --git a/images/avatars/utilisateur14/img_user.jpg b/images/avatars/utilisateur14/img_user.jpg new file mode 100644 index 0000000..17e94bd Binary files /dev/null and b/images/avatars/utilisateur14/img_user.jpg differ diff --git a/images/avatars/utilisateur15/Thumbs.db b/images/avatars/utilisateur15/Thumbs.db new file mode 100644 index 0000000..4900d56 Binary files /dev/null and b/images/avatars/utilisateur15/Thumbs.db differ diff --git a/images/avatars/utilisateur15/img_user.jpg b/images/avatars/utilisateur15/img_user.jpg new file mode 100644 index 0000000..17e94bd Binary files /dev/null and b/images/avatars/utilisateur15/img_user.jpg differ diff --git a/images/avatars/utilisateur16/Thumbs.db b/images/avatars/utilisateur16/Thumbs.db new file mode 100644 index 0000000..47950e4 Binary files /dev/null and b/images/avatars/utilisateur16/Thumbs.db differ diff --git a/images/avatars/utilisateur16/img_user.jpg b/images/avatars/utilisateur16/img_user.jpg new file mode 100644 index 0000000..17e94bd Binary files /dev/null and b/images/avatars/utilisateur16/img_user.jpg differ diff --git a/images/avatars/utilisateur17/Thumbs.db b/images/avatars/utilisateur17/Thumbs.db new file mode 100644 index 0000000..0958b2b Binary files /dev/null and b/images/avatars/utilisateur17/Thumbs.db differ diff --git a/images/avatars/utilisateur17/img_user.jpg b/images/avatars/utilisateur17/img_user.jpg new file mode 100644 index 0000000..17e94bd Binary files /dev/null and b/images/avatars/utilisateur17/img_user.jpg differ diff --git a/images/avatars/utilisateur18/Thumbs.db b/images/avatars/utilisateur18/Thumbs.db new file mode 100644 index 0000000..5b167d3 Binary files /dev/null and b/images/avatars/utilisateur18/Thumbs.db differ diff --git a/images/avatars/utilisateur18/img_user.jpg b/images/avatars/utilisateur18/img_user.jpg new file mode 100644 index 0000000..17e94bd Binary files /dev/null and b/images/avatars/utilisateur18/img_user.jpg differ diff --git a/images/avatars/utilisateur19/Thumbs.db b/images/avatars/utilisateur19/Thumbs.db new file mode 100644 index 0000000..5df19be Binary files /dev/null and b/images/avatars/utilisateur19/Thumbs.db differ diff --git a/images/avatars/utilisateur19/img_user.jpg b/images/avatars/utilisateur19/img_user.jpg new file mode 100644 index 0000000..17e94bd Binary files /dev/null and b/images/avatars/utilisateur19/img_user.jpg differ diff --git a/images/avatars/utilisateur2/Thumbs.db b/images/avatars/utilisateur2/Thumbs.db new file mode 100644 index 0000000..30157de Binary files /dev/null and b/images/avatars/utilisateur2/Thumbs.db differ diff --git a/images/avatars/utilisateur2/img_user.jpg b/images/avatars/utilisateur2/img_user.jpg new file mode 100644 index 0000000..17e94bd Binary files /dev/null and b/images/avatars/utilisateur2/img_user.jpg differ diff --git a/images/avatars/utilisateur20/Thumbs.db b/images/avatars/utilisateur20/Thumbs.db new file mode 100644 index 0000000..e60bc94 Binary files /dev/null and b/images/avatars/utilisateur20/Thumbs.db differ diff --git a/images/avatars/utilisateur20/img_user.jpg b/images/avatars/utilisateur20/img_user.jpg new file mode 100644 index 0000000..17e94bd Binary files /dev/null and b/images/avatars/utilisateur20/img_user.jpg differ diff --git a/images/avatars/utilisateur3/Thumbs.db b/images/avatars/utilisateur3/Thumbs.db new file mode 100644 index 0000000..b5ac4d2 Binary files /dev/null and b/images/avatars/utilisateur3/Thumbs.db differ diff --git a/images/avatars/utilisateur3/img_user.jpg b/images/avatars/utilisateur3/img_user.jpg new file mode 100644 index 0000000..17e94bd Binary files /dev/null and b/images/avatars/utilisateur3/img_user.jpg differ diff --git a/images/avatars/utilisateur4/Thumbs.db b/images/avatars/utilisateur4/Thumbs.db new file mode 100644 index 0000000..2ecf2a9 Binary files /dev/null and b/images/avatars/utilisateur4/Thumbs.db differ diff --git a/images/avatars/utilisateur4/img_user.jpg b/images/avatars/utilisateur4/img_user.jpg new file mode 100644 index 0000000..17e94bd Binary files /dev/null and b/images/avatars/utilisateur4/img_user.jpg differ diff --git a/images/avatars/utilisateur5/Thumbs.db b/images/avatars/utilisateur5/Thumbs.db new file mode 100644 index 0000000..b9a6cb2 Binary files /dev/null and b/images/avatars/utilisateur5/Thumbs.db differ diff --git a/images/avatars/utilisateur5/img_user.jpg b/images/avatars/utilisateur5/img_user.jpg new file mode 100644 index 0000000..17e94bd Binary files /dev/null and b/images/avatars/utilisateur5/img_user.jpg differ diff --git a/images/avatars/utilisateur6/Thumbs.db b/images/avatars/utilisateur6/Thumbs.db new file mode 100644 index 0000000..0506850 Binary files /dev/null and b/images/avatars/utilisateur6/Thumbs.db differ diff --git a/images/avatars/utilisateur6/img_user.jpg b/images/avatars/utilisateur6/img_user.jpg new file mode 100644 index 0000000..17e94bd Binary files /dev/null and b/images/avatars/utilisateur6/img_user.jpg differ diff --git a/images/avatars/utilisateur7/Thumbs.db b/images/avatars/utilisateur7/Thumbs.db new file mode 100644 index 0000000..426951c Binary files /dev/null and b/images/avatars/utilisateur7/Thumbs.db differ diff --git a/images/avatars/utilisateur7/img_user.jpg b/images/avatars/utilisateur7/img_user.jpg new file mode 100644 index 0000000..17e94bd Binary files /dev/null and b/images/avatars/utilisateur7/img_user.jpg differ diff --git a/images/avatars/utilisateur8/Thumbs.db b/images/avatars/utilisateur8/Thumbs.db new file mode 100644 index 0000000..aeca80e Binary files /dev/null and b/images/avatars/utilisateur8/Thumbs.db differ diff --git a/images/avatars/utilisateur8/img_user.jpg b/images/avatars/utilisateur8/img_user.jpg new file mode 100644 index 0000000..17e94bd Binary files /dev/null and b/images/avatars/utilisateur8/img_user.jpg differ diff --git a/images/avatars/utilisateur9/Thumbs.db b/images/avatars/utilisateur9/Thumbs.db new file mode 100644 index 0000000..5ffeb4f Binary files /dev/null and b/images/avatars/utilisateur9/Thumbs.db differ diff --git a/images/avatars/utilisateur9/img_user.jpg b/images/avatars/utilisateur9/img_user.jpg new file mode 100644 index 0000000..17e94bd Binary files /dev/null and b/images/avatars/utilisateur9/img_user.jpg differ diff --git a/images/vehicules/AA123AA/Thumbs.db b/images/vehicules/AA123AA/Thumbs.db new file mode 100644 index 0000000..84bb1c7 Binary files /dev/null and b/images/vehicules/AA123AA/Thumbs.db differ diff --git a/images/vehicules/AA123AA/img_voiture.png b/images/vehicules/AA123AA/img_voiture.png new file mode 100644 index 0000000..19d3437 Binary files /dev/null and b/images/vehicules/AA123AA/img_voiture.png differ diff --git a/images/vehicules/BB456BB/Thumbs.db b/images/vehicules/BB456BB/Thumbs.db new file mode 100644 index 0000000..a8e009d Binary files /dev/null and b/images/vehicules/BB456BB/Thumbs.db differ diff --git a/images/vehicules/BB456BB/img_voiture.png b/images/vehicules/BB456BB/img_voiture.png new file mode 100644 index 0000000..19d3437 Binary files /dev/null and b/images/vehicules/BB456BB/img_voiture.png differ diff --git a/images/vehicules/CC789CC/Thumbs.db b/images/vehicules/CC789CC/Thumbs.db new file mode 100644 index 0000000..1afd15f Binary files /dev/null and b/images/vehicules/CC789CC/Thumbs.db differ diff --git a/images/vehicules/CC789CC/img_voiture.png b/images/vehicules/CC789CC/img_voiture.png new file mode 100644 index 0000000..19d3437 Binary files /dev/null and b/images/vehicules/CC789CC/img_voiture.png differ diff --git a/images/vehicules/DD012DD/Thumbs.db b/images/vehicules/DD012DD/Thumbs.db new file mode 100644 index 0000000..db29b16 Binary files /dev/null and b/images/vehicules/DD012DD/Thumbs.db differ diff --git a/images/vehicules/DD012DD/img_voiture.png b/images/vehicules/DD012DD/img_voiture.png new file mode 100644 index 0000000..19d3437 Binary files /dev/null and b/images/vehicules/DD012DD/img_voiture.png differ diff --git a/images/vehicules/EE345EE/Thumbs.db b/images/vehicules/EE345EE/Thumbs.db new file mode 100644 index 0000000..eb042d7 Binary files /dev/null and b/images/vehicules/EE345EE/Thumbs.db differ diff --git a/images/vehicules/EE345EE/img_voiture.png b/images/vehicules/EE345EE/img_voiture.png new file mode 100644 index 0000000..19d3437 Binary files /dev/null and b/images/vehicules/EE345EE/img_voiture.png differ diff --git a/images/vehicules/FF678FF/Thumbs.db b/images/vehicules/FF678FF/Thumbs.db new file mode 100644 index 0000000..0a5ec24 Binary files /dev/null and b/images/vehicules/FF678FF/Thumbs.db differ diff --git a/images/vehicules/FF678FF/img_voiture.png b/images/vehicules/FF678FF/img_voiture.png new file mode 100644 index 0000000..19d3437 Binary files /dev/null and b/images/vehicules/FF678FF/img_voiture.png differ diff --git a/images/vehicules/GG901GG/Thumbs.db b/images/vehicules/GG901GG/Thumbs.db new file mode 100644 index 0000000..4fc4dd4 Binary files /dev/null and b/images/vehicules/GG901GG/Thumbs.db differ diff --git a/images/vehicules/GG901GG/img_voiture.png b/images/vehicules/GG901GG/img_voiture.png new file mode 100644 index 0000000..19d3437 Binary files /dev/null and b/images/vehicules/GG901GG/img_voiture.png differ diff --git a/images/vehicules/GH209RH/img_voiture.png b/images/vehicules/GH209RH/img_voiture.png new file mode 100644 index 0000000..f895bd9 Binary files /dev/null and b/images/vehicules/GH209RH/img_voiture.png differ diff --git a/images/vehicules/HH234HH/Thumbs.db b/images/vehicules/HH234HH/Thumbs.db new file mode 100644 index 0000000..bc2288e Binary files /dev/null and b/images/vehicules/HH234HH/Thumbs.db differ diff --git a/images/vehicules/HH234HH/img_voiture.png b/images/vehicules/HH234HH/img_voiture.png new file mode 100644 index 0000000..19d3437 Binary files /dev/null and b/images/vehicules/HH234HH/img_voiture.png differ diff --git a/images/vehicules/II567II/Thumbs.db b/images/vehicules/II567II/Thumbs.db new file mode 100644 index 0000000..fd9317b Binary files /dev/null and b/images/vehicules/II567II/Thumbs.db differ diff --git a/images/vehicules/II567II/img_voiture.png b/images/vehicules/II567II/img_voiture.png new file mode 100644 index 0000000..19d3437 Binary files /dev/null and b/images/vehicules/II567II/img_voiture.png differ diff --git a/images/vehicules/IO334PO/img_voiture.png b/images/vehicules/IO334PO/img_voiture.png new file mode 100644 index 0000000..de25c66 Binary files /dev/null and b/images/vehicules/IO334PO/img_voiture.png differ diff --git a/images/vehicules/JJ890JJ/Thumbs.db b/images/vehicules/JJ890JJ/Thumbs.db new file mode 100644 index 0000000..797856f Binary files /dev/null and b/images/vehicules/JJ890JJ/Thumbs.db differ diff --git a/images/vehicules/JJ890JJ/img_voiture.png b/images/vehicules/JJ890JJ/img_voiture.png new file mode 100644 index 0000000..19d3437 Binary files /dev/null and b/images/vehicules/JJ890JJ/img_voiture.png differ diff --git a/images/vehicules/KK123KK/Thumbs.db b/images/vehicules/KK123KK/Thumbs.db new file mode 100644 index 0000000..f0fee27 Binary files /dev/null and b/images/vehicules/KK123KK/Thumbs.db differ diff --git a/images/vehicules/KK123KK/img_voiture.png b/images/vehicules/KK123KK/img_voiture.png new file mode 100644 index 0000000..19d3437 Binary files /dev/null and b/images/vehicules/KK123KK/img_voiture.png differ diff --git a/images/vehicules/LL456LL/Thumbs.db b/images/vehicules/LL456LL/Thumbs.db new file mode 100644 index 0000000..20e86d1 Binary files /dev/null and b/images/vehicules/LL456LL/Thumbs.db differ diff --git a/images/vehicules/LL456LL/img_voiture.png b/images/vehicules/LL456LL/img_voiture.png new file mode 100644 index 0000000..19d3437 Binary files /dev/null and b/images/vehicules/LL456LL/img_voiture.png differ diff --git a/images/vehicules/MM789MM/Thumbs.db b/images/vehicules/MM789MM/Thumbs.db new file mode 100644 index 0000000..9b5b0bd Binary files /dev/null and b/images/vehicules/MM789MM/Thumbs.db differ diff --git a/images/vehicules/MM789MM/img_voiture.png b/images/vehicules/MM789MM/img_voiture.png new file mode 100644 index 0000000..19d3437 Binary files /dev/null and b/images/vehicules/MM789MM/img_voiture.png differ diff --git a/images/vehicules/NN012NN/Thumbs.db b/images/vehicules/NN012NN/Thumbs.db new file mode 100644 index 0000000..232ef70 Binary files /dev/null and b/images/vehicules/NN012NN/Thumbs.db differ diff --git a/images/vehicules/NN012NN/img_voiture.png b/images/vehicules/NN012NN/img_voiture.png new file mode 100644 index 0000000..19d3437 Binary files /dev/null and b/images/vehicules/NN012NN/img_voiture.png differ diff --git a/images/vehicules/OO345OO/Thumbs.db b/images/vehicules/OO345OO/Thumbs.db new file mode 100644 index 0000000..05e4e8e Binary files /dev/null and b/images/vehicules/OO345OO/Thumbs.db differ diff --git a/images/vehicules/OO345OO/img_voiture.png b/images/vehicules/OO345OO/img_voiture.png new file mode 100644 index 0000000..19d3437 Binary files /dev/null and b/images/vehicules/OO345OO/img_voiture.png differ diff --git a/images/vehicules/PH940OP/img_voiture.png b/images/vehicules/PH940OP/img_voiture.png new file mode 100644 index 0000000..621316f Binary files /dev/null and b/images/vehicules/PH940OP/img_voiture.png differ diff --git a/images/vehicules/PP678PP/Thumbs.db b/images/vehicules/PP678PP/Thumbs.db new file mode 100644 index 0000000..0c5ae7b Binary files /dev/null and b/images/vehicules/PP678PP/Thumbs.db differ diff --git a/images/vehicules/PP678PP/img_voiture.png b/images/vehicules/PP678PP/img_voiture.png new file mode 100644 index 0000000..19d3437 Binary files /dev/null and b/images/vehicules/PP678PP/img_voiture.png differ diff --git a/images/vehicules/QQ901QQ/Thumbs.db b/images/vehicules/QQ901QQ/Thumbs.db new file mode 100644 index 0000000..7c8970d Binary files /dev/null and b/images/vehicules/QQ901QQ/Thumbs.db differ diff --git a/images/vehicules/QQ901QQ/img_voiture.png b/images/vehicules/QQ901QQ/img_voiture.png new file mode 100644 index 0000000..19d3437 Binary files /dev/null and b/images/vehicules/QQ901QQ/img_voiture.png differ diff --git a/images/vehicules/RR234RR/Thumbs.db b/images/vehicules/RR234RR/Thumbs.db new file mode 100644 index 0000000..7a2d706 Binary files /dev/null and b/images/vehicules/RR234RR/Thumbs.db differ diff --git a/images/vehicules/RR234RR/img_voiture.png b/images/vehicules/RR234RR/img_voiture.png new file mode 100644 index 0000000..19d3437 Binary files /dev/null and b/images/vehicules/RR234RR/img_voiture.png differ diff --git a/images/vehicules/SS567SS/Thumbs.db b/images/vehicules/SS567SS/Thumbs.db new file mode 100644 index 0000000..4f063c5 Binary files /dev/null and b/images/vehicules/SS567SS/Thumbs.db differ diff --git a/images/vehicules/SS567SS/img_voiture.png b/images/vehicules/SS567SS/img_voiture.png new file mode 100644 index 0000000..19d3437 Binary files /dev/null and b/images/vehicules/SS567SS/img_voiture.png differ diff --git a/images/vehicules/TT890TT/Thumbs.db b/images/vehicules/TT890TT/Thumbs.db new file mode 100644 index 0000000..60fe5d1 Binary files /dev/null and b/images/vehicules/TT890TT/Thumbs.db differ diff --git a/images/vehicules/TT890TT/img_voiture.png b/images/vehicules/TT890TT/img_voiture.png new file mode 100644 index 0000000..19d3437 Binary files /dev/null and b/images/vehicules/TT890TT/img_voiture.png differ diff --git a/images/vehicules/Thumbs.db b/images/vehicules/Thumbs.db new file mode 100644 index 0000000..b09ff0a Binary files /dev/null and b/images/vehicules/Thumbs.db differ diff --git a/images/vehicules/WSD754YH/img_voiture.png b/images/vehicules/WSD754YH/img_voiture.png new file mode 100644 index 0000000..9fe1f96 Binary files /dev/null and b/images/vehicules/WSD754YH/img_voiture.png differ diff --git a/images/vehicules/XD738UJ/img_voiture.png b/images/vehicules/XD738UJ/img_voiture.png new file mode 100644 index 0000000..b21cd1f Binary files /dev/null and b/images/vehicules/XD738UJ/img_voiture.png differ diff --git a/images/vehicules/agence.png b/images/vehicules/agence.png new file mode 100644 index 0000000..c248c8f Binary files /dev/null and b/images/vehicules/agence.png differ diff --git a/images/vehicules/img_voiture.png b/images/vehicules/img_voiture.png new file mode 100644 index 0000000..19d3437 Binary files /dev/null and b/images/vehicules/img_voiture.png differ diff --git a/images/vehicules/voiture.png b/images/vehicules/voiture.png new file mode 100644 index 0000000..58e685a Binary files /dev/null and b/images/vehicules/voiture.png differ diff --git a/index.php b/index.php new file mode 100644 index 0000000..f092ffe --- /dev/null +++ b/index.php @@ -0,0 +1,4 @@ + diff --git a/inscription.php b/inscription.php new file mode 100644 index 0000000..a986a40 --- /dev/null +++ b/inscription.php @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/js/script.js b/js/script.js new file mode 100644 index 0000000..83bad87 --- /dev/null +++ b/js/script.js @@ -0,0 +1,53 @@ +// DECONNECTION +$(document).ready(function () { + // Fonction pour gérer la déconnexion + function deconnexion() { + $.ajax({ + url: "deconnexion.php", + type: "POST", + success: function (data) { + // Afficher le message de succès + $("#message").html( + "
" + data + "
" + ); + // Redirection après 5 secondes + setTimeout(function () { + window.location.href = "index.php"; + }, 5000); + }, + error: function (jqXHR, textStatus, errorThrown) { + // Afficher un message d'erreur si la déconnexion échoue + $("#message").html( + "
Erreur de déconnexion
" + ); + }, + }); + } + // Gérer le clic sur le lien de déconnexion + $("#deconnexionLink").click(function (e) { + e.preventDefault(); // Empêcher le lien de déclencher une action par défaut + deconnexion(); // Déclencher la fonction de déconnexion + }); +}); + +function getCookie(name) { + let cookieArr = document.cookie.split(";"); + for(let i = 0; i < cookieArr.length; i++) { + let cookiePair = cookieArr[i].split("="); + if(name == cookiePair[0].trim()) { + return decodeURIComponent(cookiePair[1]); + } + } + return null; +} + +function acceptCookies() { + document.cookie = "cookieConsent=true; 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 new file mode 100644 index 0000000..7672bfe --- /dev/null +++ b/js/script_calendar.js @@ -0,0 +1,221 @@ +//# AFFICHE MY EVENT +var calendarMyEvents = $("#calendar-my-events").fullCalendar({ + events: "./modele/event/fetch-my-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-my-events").fullCalendar("removeEvents", event.id); + displayMessage("Réservation supprimée avec succès"); + } + }, + }); + } + }); + }, + 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"); + }, +}); + +//# 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"); + } + }, + }); + } + }); + }, + 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); + + $.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."); + }, + }); + }); + function displayMessage(message) { + alert(message); + } +}); + +//# 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/js/script_map.js b/js/script_map.js new file mode 100644 index 0000000..4484094 --- /dev/null +++ b/js/script_map.js @@ -0,0 +1,76 @@ +const DEFAULT_LATITUDE = 48.852969; +const DEFAULT_LONGITUDE = 2.349903; +// Event de pour initialisé la récuperation des voitures pour la MAP +document.addEventListener("DOMContentLoaded", () => { + // Vérifier si nous sommes sur la page d'accueil + if (["/index.php", "/"].includes(window.location.pathname)) { + getCars(); + } +}); +// Récuperation des voitures pour la MAP +function getCars() { + fetch("./modele/get_cars.php") + .then((response) => { + if (!response.ok) { + throw new Error(`HTTP error! Status: ${response.status}`); + } + return response.json(); + }) + .then((data) => { + initMap(data); + }) + .catch((error) => { + console.error("Erreur lors de la récupération des véhicules:", error); + }); +} +// Initialisation de la MAP +function initMap(vehicules) { + const markers = []; + const macarte = L.map("map"); + // Utiliser la géolocalisation pour définir la vue de la carte + navigator.geolocation.getCurrentPosition( + (position) => { + const { latitude, longitude } = position.coords; + macarte.setView([latitude, longitude], 11); + }, + () => { + // En cas d'erreur de géolocalisation, utiliser les coordonnées par défaut + macarte.setView([DEFAULT_LATITUDE, DEFAULT_LONGITUDE], 11); + } + ); + const markerClusters = L.markerClusterGroup(); + L.tileLayer("https://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png", { + attribution: "données © OpenStreetMap/ODbL - rendu OSM France", + minZoom: 1, + maxZoom: 20, + }).addTo(macarte); + for (const vehicule of Object.values(vehicules)) { + const { id, lat, lon, img, dispo, marque, modele, annee } = vehicule; + const iconBase = img; + const disponibilite = dispo ? "Disponible" : "Indisponible"; + const dispochar = dispo ? "disponible" : "indisponible"; + const myIcon = L.icon({ + iconUrl: iconBase, + iconSize: [50, 50], + iconAnchor: [25, 50], + popupAnchor: [-3, -76], + }); + const popupContent = ` +
+ Modèle: ${marque} ${modele} +
+ Année: ${annee} +
+ ${disponibilite} +
+ `; + const marker = L.marker([lat, lon], { icon: myIcon }).bindPopup( + popupContent + ); + markerClusters.addLayer(marker); + markers.push(marker); + } + const group = L.featureGroup(markers); + macarte.fitBounds(group.getBounds().pad(0.5)); + macarte.addLayer(markerClusters); +} diff --git a/logs/post_data_location.txt b/logs/post_data_location.txt new file mode 100644 index 0000000..104139a --- /dev/null +++ b/logs/post_data_location.txt @@ -0,0 +1,50 @@ +{"id":"1","latitude":"48.6757376","longitude":"2.3862352","datetime":"13-05-2024 07.25"} +{"id":"1","latitude":"48.6757324","longitude":"2.3862389","datetime":"13-05-2024 07.30"} +{"id":"1","latitude":"48.6757915","longitude":"2.3861241","datetime":"13-05-2024 07.35"} +{"id":"1","latitude":"48.8188416","longitude":"2.2763714","datetime":"13-05-2024 10.46"} +{"id":"1","latitude":"48.8188382","longitude":"2.2763385","datetime":"13-05-2024 10.50"} +{"id":"1","latitude":"48.8188405","longitude":"2.2763732","datetime":"13-05-2024 17.35"} +{"id":"1","latitude":"48.6757237","longitude":"2.3862497","datetime":"17-05-2024 19.00"} +{"id":"1","latitude":"48.6757276","longitude":"2.3862427","datetime":"17-05-2024 19.05"} +{"id":"1","latitude":"48.6757302","longitude":"2.3862478","datetime":"17-05-2024 19.10"} +{"id":"1","latitude":"48.6757324","longitude":"2.3862413","datetime":"17-05-2024 19.15"} +{"id":"1","latitude":"48.6757372","longitude":"2.3862426","datetime":"17-05-2024 19.20"} +{"id":"1","latitude":"48.6757309","longitude":"2.3862486","datetime":"17-05-2024 19.25"} +{"id":"1","latitude":"48.6757363","longitude":"2.3862457","datetime":"17-05-2024 19.30"} +{"id":"1","latitude":"48.6757305","longitude":"2.3862274","datetime":"17-05-2024 19.35"} +{"id":"1","latitude":"48.6757341","longitude":"2.3862316","datetime":"17-05-2024 19.40"} +{"id":"1","latitude":"48.6757312","longitude":"2.3862483","datetime":"17-05-2024 19.45"} +{"id":"1","latitude":"48.6757261","longitude":"2.3862362","datetime":"17-05-2024 19.50"} +{"id":"1","latitude":"48.6757792","longitude":"2.3888016","datetime":"17-05-2024 19.55"} +{"id":"1","latitude":"48.67573","longitude":"2.3862491","datetime":"17-05-2024 20.00"} +{"id":"1","latitude":"48.6757347","longitude":"2.3862244","datetime":"17-05-2024 20.05"} +{"id":"1","latitude":"48.675733","longitude":"2.3862391","datetime":"17-05-2024 20.10"} +{"id":"1","latitude":"48.6757304","longitude":"2.3862304","datetime":"17-05-2024 20.15"} +{"id":"1","latitude":"48.6757279","longitude":"2.386231","datetime":"17-05-2024 20.20"} +{"id":"1","latitude":"48.6757314","longitude":"2.3862299","datetime":"17-05-2024 20.25"} +{"id":"1","latitude":"48.6757345","longitude":"2.3862436","datetime":"17-05-2024 20.30"} +{"id":"1","latitude":"48.6757326","longitude":"2.3862417","datetime":"17-05-2024 20.35"} +{"id":"1","latitude":"48.6757792","longitude":"2.3888016","datetime":"17-05-2024 20.40"} +{"id":"1","latitude":"48.6757293","longitude":"2.3862462","datetime":"17-05-2024 20.45"} +{"id":"1","latitude":"48.6757326","longitude":"2.3862393","datetime":"17-05-2024 20.50"} +{"id":"1","latitude":"48.6757282","longitude":"2.386245","datetime":"17-05-2024 20.55"} +{"id":"1","latitude":"48.6757792","longitude":"2.3888016","datetime":"17-05-2024 21.00"} +{"id":"1","latitude":"48.6757323","longitude":"2.3862166","datetime":"17-05-2024 21.05"} +{"id":"1","latitude":"48.6757264","longitude":"2.3862469","datetime":"17-05-2024 21.10"} +{"id":"1","latitude":"48.6757248","longitude":"2.3862381","datetime":"17-05-2024 21.15"} +{"id":"1","latitude":"48.6757348","longitude":"2.3862494","datetime":"17-05-2024 21.20"} +{"id":"1","latitude":"48.6757303","longitude":"2.3862402","datetime":"17-05-2024 21.25"} +{"id":"1","latitude":"48.6757234","longitude":"2.3862466","datetime":"17-05-2024 21.30"} +{"id":"1","latitude":"48.6757243","longitude":"2.3862428","datetime":"17-05-2024 21.35"} +{"id":"1","latitude":"48.6757261","longitude":"2.3862376","datetime":"17-05-2024 21.40"} +{"id":"1","latitude":"48.6757792","longitude":"2.3888016","datetime":"17-05-2024 21.45"} +{"id":"1","latitude":"48.6757603","longitude":"2.3861907","datetime":"17-05-2024 21.50"} +{"id":"1","latitude":"48.6757432","longitude":"2.3862243","datetime":"17-05-2024 21.55"} +{"id":"1","latitude":"48.6757291","longitude":"2.3862442","datetime":"17-05-2024 22.00"} +{"id":"1","latitude":"48.6757295","longitude":"2.3862361","datetime":"17-05-2024 22.05"} +{"id":"1","latitude":"48.6757211","longitude":"2.3862427","datetime":"17-05-2024 22.10"} +{"id":"1","latitude":"48.6757241","longitude":"2.3862465","datetime":"17-05-2024 22.15"} +{"id":"1","latitude":"48.6757286","longitude":"2.3862346","datetime":"17-05-2024 22.20"} +{"id":"1","latitude":"48.6757215","longitude":"2.3862465","datetime":"17-05-2024 22.25"} +{"id":"1","latitude":"48.6757256","longitude":"2.3862458","datetime":"17-05-2024 22.30"} +{"id":"1","latitude":"48.6779999","longitude":"2.3875904","datetime":"18-05-2024 00.49"} diff --git a/modele/event/add-event.php b/modele/event/add-event.php new file mode 100644 index 0000000..2e6faf6 --- /dev/null +++ b/modele/event/add-event.php @@ -0,0 +1,64 @@ + 'error', 'message' => 'Tous les champs sont requis.'])); +} + +try { + // Démarrer la transaction + $bdd->beginTransaction(); + + // Préparation de la requête SQL avec un titre temporaire + $sqlInsert = "INSERT INTO Reservations (title, id_user, id_vehicule, start, end) VALUES ('Temp Title', :id_user, :id_vehicule, :start, :end)"; + $stmt = $bdd->prepare($sqlInsert); + + // Liaison des valeurs aux paramètres + $stmt->bindParam(':id_user', $id_user, PDO::PARAM_INT); + $stmt->bindParam(':id_vehicule', $id_vehicule, PDO::PARAM_INT); + $stmt->bindParam(':start', $start, PDO::PARAM_STR); + $stmt->bindParam(':end', $end, PDO::PARAM_STR); + + // Exécution de la requête préparée + if ($stmt->execute()) { + // Récupérer l'ID de la dernière réservation insérée + $lastInsertId = $bdd->lastInsertId(); + + // Mise à jour du titre de la réservation avec l'ID + $sqlUpdate = "UPDATE Reservations SET title = CONCAT('Reservation ', :id) WHERE id = :id"; + $stmtUpdate = $bdd->prepare($sqlUpdate); + $stmtUpdate->bindParam(':id', $lastInsertId, PDO::PARAM_INT); + + if ($stmtUpdate->execute()) { + // Commit de la transaction + $bdd->commit(); + echo json_encode(['status' => 'success', 'message' => 'Réservation créée avec succès.', 'reservation_id' => $lastInsertId]); + } else { + // Rollback de la transaction + $bdd->rollBack(); + $error = $stmtUpdate->errorInfo(); + echo json_encode(['status' => 'error', 'message' => 'Erreur lors de la mise à jour de la réservation : ' . $error[2]]); + } + } else { + // Rollback de la transaction + $bdd->rollBack(); + $error = $stmt->errorInfo(); + echo json_encode(['status' => 'error', 'message' => 'Erreur lors de la création de la réservation : ' . $error[2]]); + } +} catch (PDOException $e) { + // Rollback de la transaction en cas d'exception + $bdd->rollBack(); + echo json_encode(['status' => 'error', 'message' => 'Erreur de connexion à la base de données : ' . $e->getMessage()]); +} + +// Fermeture de la connexion PDO +$bdd = null; +?> diff --git a/modele/event/add-my-event.php b/modele/event/add-my-event.php new file mode 100644 index 0000000..11f9a09 --- /dev/null +++ b/modele/event/add-my-event.php @@ -0,0 +1,80 @@ + '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); + 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; +$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) { + die(json_encode(['status' => 'error', 'message' => 'Tous les champs sont requis.'])); +} + +// 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).'])); +} + +try { + // Démarrer la transaction + $bdd->beginTransaction(); + + // Préparation de la requête SQL avec des paramètres liés + $sqlInsert = "INSERT INTO Reservations (id_user, id_vehicule, start, end) VALUES (:id_user, :id_vehicule, :start, :end)"; + $stmt = $bdd->prepare($sqlInsert); + + // Liaison des valeurs aux paramètres + $stmt->bindParam(':id_user', $id_user, PDO::PARAM_INT); + $stmt->bindParam(':id_vehicule', $id_vehicule, PDO::PARAM_INT); + $stmt->bindParam(':start', $start, PDO::PARAM_STR); + $stmt->bindParam(':end', $end, PDO::PARAM_STR); + + // Exécution de la requête préparée + if ($stmt->execute()) { + // Récupérer l'ID de la dernière réservation insérée + $lastInsertId = $bdd->lastInsertId(); + + // Mise à jour du titre de la réservation avec l'ID + $sqlUpdate = "UPDATE Reservations SET title = CONCAT('Reservation ', :id) WHERE id = :id"; + $stmtUpdate = $bdd->prepare($sqlUpdate); + $stmtUpdate->bindParam(':id', $lastInsertId, PDO::PARAM_INT); + + if ($stmtUpdate->execute()) { + // Commit de la transaction + $bdd->commit(); + echo json_encode(['status' => 'success', 'message' => 'Réservation créée avec succès.', 'reservation_id' => $lastInsertId]); + } else { + // Rollback de la transaction + $bdd->rollBack(); + $error = $stmtUpdate->errorInfo(); + echo json_encode(['status' => 'error', 'message' => 'Erreur lors de la mise à jour de la réservation : ' . $error[2]]); + } + } else { + // Rollback de la transaction + $bdd->rollBack(); + $error = $stmt->errorInfo(); + echo json_encode(['status' => 'error', 'message' => 'Erreur lors de la création de la réservation : ' . $error[2]]); + } +} catch (PDOException $e) { + // Rollback de la transaction en cas d'exception + $bdd->rollBack(); + echo json_encode(['status' => 'error', 'message' => 'Erreur de connexion à la base de données : ' . $e->getMessage()]); +} + +// Fermeture de la connexion PDO +$bdd = null; +?> diff --git a/modele/event/delete-event.php b/modele/event/delete-event.php new file mode 100644 index 0000000..a270699 --- /dev/null +++ b/modele/event/delete-event.php @@ -0,0 +1,14 @@ +prepare($sqlDelete); +$stmt->bindParam(':id', $id, PDO::PARAM_INT); +$stmt->execute(); +// Utilisation de rowCount() pour obtenir le nombre de lignes affectées +$affectedRows = $stmt->rowCount(); +echo $affectedRows; +// Fermeture de la connexion PDO +$bdd = null; +?> \ No newline at end of file diff --git a/modele/event/fetch-all-events.php b/modele/event/fetch-all-events.php new file mode 100644 index 0000000..9b806cd --- /dev/null +++ b/modele/event/fetch-all-events.php @@ -0,0 +1,16 @@ +query($sqlQuery); +$eventArray = $stmt->fetchAll(PDO::FETCH_ASSOC); +foreach ($eventArray as &$event) { + $event['vehicule'] = $event['marque'] . ' ' . $event['modele']; // Supposons que le nom du véhicule est stocké dans 'marque' +} +foreach ($eventArray as &$event) { + $event['utilisateur'] = $event['pseudo']; // Supposons que le nom du véhicule est stocké dans 'marque' +} +echo json_encode($eventArray); +$bdd = null; +?> \ No newline at end of file diff --git a/modele/event/fetch-my-events.php b/modele/event/fetch-my-events.php new file mode 100644 index 0000000..ff17faa --- /dev/null +++ b/modele/event/fetch-my-events.php @@ -0,0 +1,19 @@ +prepare($sqlQuery); +$stmt->bindParam(':id', $id, PDO::PARAM_INT); +$stmt->execute(); +$eventArray = $stmt->fetchAll(PDO::FETCH_ASSOC); +foreach ($eventArray as &$event) { + $event['vehicule'] = $event['marque'] . ' ' . $event['modele']; // Supposons que le nom du véhicule est stocké dans 'marque' +} +foreach ($eventArray as &$event) { + $event['utilisateur'] = $event['pseudo']; // Supposons que le nom du véhicule est stocké dans 'marque' +} +echo json_encode($eventArray); +$bdd = null; +?> \ No newline at end of file diff --git a/modele/get_cars.php b/modele/get_cars.php new file mode 100644 index 0000000..a7c6cc3 --- /dev/null +++ b/modele/get_cars.php @@ -0,0 +1,25 @@ +query($query); +$cars = $statement->fetchAll(PDO::FETCH_ASSOC); +// Initialisation d'un tableau pour stocker les données des Vehicules +$Vehicules = array(); +// Remplissage du tableau avec les données récupérées de la base de données +foreach ($cars as $car) { + $Vehicules[$car['id']] = array( + "lat" => $car['latitude'], + "lon" => $car['longitude'], + "img" => $car['image'], + "marque" => $car['marque'], + "modele" => $car['modele'], + "dispo" => $car['disponible'], + "annee" => $car['annee']); +} +// Renvoi des données au format JSON +header('Content-Type: application/json'); +echo json_encode($Vehicules); +?> \ No newline at end of file diff --git a/modele/profil.php b/modele/profil.php new file mode 100644 index 0000000..8315df8 --- /dev/null +++ b/modele/profil.php @@ -0,0 +1,255 @@ +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(){ + 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); + $req->execute(); + $pseudo_free=($req->fetchColumn()==0)?1:0; + $req->CloseCursor(); + return $pseudo_free; +} +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); +} +function get_MemberInfoId(){ + global $bdd; + $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(); + $data = $req->fetch(); + return $data; +} +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_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_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; +} +# 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 + $dirPath = "./images/avatars/" . $pseudo . "/"; + 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); + } 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); + } + $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 post_RemoveAvatar($pseudo){ + global $bdd; + $id=(isset($_SESSION['id_session']))?(int) $_SESSION['id_session']:0; + // 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; + } +} +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 + $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 + $folderPath = dirname($imagePath); + rmdir($folderPath); + } + // Supprimer le véhicule 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 +} +?> \ No newline at end of file diff --git a/modele/vehicule.php b/modele/vehicule.php new file mode 100644 index 0000000..681ec95 --- /dev/null +++ b/modele/vehicule.php @@ -0,0 +1,142 @@ +prepare('SELECT COUNT(*) AS nbr FROM Vehicules WHERE plaque =:plaque'); + $req->bindValue(':plaque',$plaque, PDO::PARAM_STR); + $req->execute(); + $plaque_free=($req->fetchColumn()==0)?1:0; + $req->CloseCursor(); + return $plaque_free; +} +function get_CarsInfo(){ // Informations de tout les vehicules dans un tableau + global $bdd; + $req = $bdd->prepare('SELECT id, plaque, image, marque, modele, annee, disponible, latitude, longitude, ip FROM Vehicules ORDER BY id'); + $req->execute(); + $data = $req->fetchAll(PDO::FETCH_ASSOC); + return $data; +} +function getCarInfoMap() { + global $bdd; + // Requête pour récupérer les Vehicules + $query = "SELECT * FROM Vehicules"; + $statement = $bdd->query($query); + $cars = $statement->fetchAll(PDO::FETCH_ASSOC); + + // Initialisation d'un tableau pour stocker les données des Vehicules + $vehiculesData = array(); + + // Remplissage du tableau avec les données récupérées de la base de données + foreach ($cars as $car) { + $vehiculesData[$car['id']] = array( + "lat" => $car['latitude'], + "lon" => $car['longitude'], + "img" => $car['image'], + "marque" => $car['marque'], + "modele" => $car['modele'], + "dispo" => $car['disponible'], + "annee" => $car['annee'] + ); + } + return json_encode($vehiculesData); +} +function get_VehiculesCount(){ + global $bdd; + $TotalDesVehiculess = $bdd->query('SELECT COUNT(*) FROM Vehicules')->fetchColumn(); + return $TotalDesVehiculess; +} +function get_CarInfoId(){ + global $bdd; + $id=1; + //On prend les infos de la Vehicules + $req = $bdd->prepare('SELECT latitude, longitude FROM Vehicules WHERE id=:id'); + $req->bindValue(':id',$id,PDO::PARAM_INT); + $req->execute(); + $data = $req->fetch(); + return $data; +} +function post_RemoveVehicule($id) { + global $bdd; + + // Récupérer le chemin de l'image à partir de la base de données + $req = $bdd->prepare('SELECT image FROM Vehicules 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['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'); + $req->bindValue(':id', $id, PDO::PARAM_INT); + $req->execute(); + $req->closeCursor(); +} +function post_RegistreCar(){ // Ajout vehicule en DB + global $bdd; + $plaque=$_POST['plaque']; + $marque=$_POST['marque']; + $modele=$_POST['modele']; + $annee=$_POST['annee']; + $image = $_FILES['image']; + // Créer le répertoire pour les images si nécessaire + $dirPath = "./images/vehicules/" . $plaque . "/"; + 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_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"; + copy($defaultImagePath, $dirPath); + } + $req = $bdd->prepare('INSERT INTO Vehicules (plaque, marque, modele, annee, image) VALUES (:plaque, :marque, :modele, :annee, :nomimage)'); + $req->bindValue(':plaque', $plaque, PDO::PARAM_STR); + $req->bindValue(':marque', $marque, PDO::PARAM_STR); + $req->bindValue(':modele', $modele, PDO::PARAM_STR); + $req->bindValue(':annee', $annee, PDO::PARAM_STR); + $req->bindValue(':nomimage', $nomimage, PDO::PARAM_STR); + $req->execute(); +} +function edit_image($image, $plaque) { + if (isset($image)) { + $source = $image['tmp_name']; + $dir = "./images/vehicules/" . $plaque . "/img_vehicule.png"; + // 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 + imagepng($imageResized, $dir); + // Libérer la mémoire + imagedestroy($imageResized); + imagedestroy($imageSource); + // Retourner le chemin relatif de l'image redimensionnée + return $dir; + } +} +?> \ No newline at end of file diff --git a/module/module.zip b/module/module.zip new file mode 100644 index 0000000..fe3a1dd Binary files /dev/null and b/module/module.zip differ diff --git a/policy.php b/policy.php new file mode 100644 index 0000000..a0cebd0 --- /dev/null +++ b/policy.php @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/profil.php b/profil.php new file mode 100644 index 0000000..903d60a --- /dev/null +++ b/profil.php @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/send_mail.php b/send_mail.php new file mode 100644 index 0000000..59a395a --- /dev/null +++ b/send_mail.php @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/send_position.php b/send_position.php new file mode 100644 index 0000000..23c6a06 --- /dev/null +++ b/send_position.php @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/sql/CREATE TABLES.sql b/sql/CREATE TABLES.sql new file mode 100644 index 0000000..75a43ad --- /dev/null +++ b/sql/CREATE TABLES.sql @@ -0,0 +1,122 @@ +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 new file mode 100644 index 0000000..0562aa0 --- /dev/null +++ b/sql/INDEX TABLES.sql @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000..c5cd2a6 --- /dev/null +++ b/vue/connexion.html @@ -0,0 +1,76 @@ + +
+
+
+
+
+

Connexion

+
+
+
+
+
+ + +
+
+ + +
+
+
+ +
+
+ Pas encore inscrit ? +
+
+
+
+
+
+
+
+

La plateforme en chiffre

+
+
+

La plateforme compte membres.

+

véhicules disponibles à la réservation sur la plateforme.

+

est le dernier membre inscrit.

+
+
+
+
+
+
+
+
+

Contact

+ +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+
+
+
+
+
+ diff --git a/vue/edit_profile_view.html b/vue/edit_profile_view.html new file mode 100644 index 0000000..7b8cbd1 --- /dev/null +++ b/vue/edit_profile_view.html @@ -0,0 +1,103 @@ + +
+
+
+
+
+
+

Edition du profil de +

+
+
+ Mot de passe +
+ +
+ +
+
+
+ +
+ +
+
+
+
+ Localisation et contacts +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ Informations personnelles +
+ +
+

+
+
+
+ +
+

+
+
+
+ +
+

+
+
+
+
+
+ +
+ Aucun avatar /> +
+
+
+ +
+ + Supprimer mon avatar +
+
+
+
+ + +
+ +
+
+
+
+
+
+
+
+ +
+
+
+
+ \ No newline at end of file diff --git a/vue/erreur.html b/vue/erreur.html new file mode 100644 index 0000000..3abf59d --- /dev/null +++ b/vue/erreur.html @@ -0,0 +1,15 @@ + +
+
+
+
+
+
Accès non autorisé
+

+ Retour à la page d'accueil +
+
+
+
+
+ \ No newline at end of file diff --git a/vue/footer.html b/vue/footer.html new file mode 100644 index 0000000..d47d66c --- /dev/null +++ b/vue/footer.html @@ -0,0 +1,46 @@ + + +
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vue/gestion.html b/vue/gestion.html new file mode 100644 index 0000000..7943289 --- /dev/null +++ b/vue/gestion.html @@ -0,0 +1,117 @@ + +
+

Interface de gestion de véhicule


+
+
+
+
+

Formulaire de réservation +

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Planning de réservation

+
+
+
+
+
+
+
+
+
+
+
+

Liste des véhicules de la compagnie

+
+
+
+ +
+
+ Car Image +
+
+

Année :

+

Plaque :

+

+ Disponible'; } else { echo 'Indisponible'; } ?> +

+ +
+ + +
+
+
+
+ +
+
+
+
+
+
+
+
+
+

Formulaire pour les nouveaux véhicules

+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+
+
+
+
+
+ \ No newline at end of file diff --git a/vue/header.html b/vue/header.html new file mode 100644 index 0000000..50b5f50 --- /dev/null +++ b/vue/header.html @@ -0,0 +1,58 @@ + + + + + + CARIA Project + + + + + + + + + + + +
+
+
+ +
+
+
+
+
+
+
+
+
+
diff --git a/vue/home.html b/vue/home.html new file mode 100644 index 0000000..aab59ed --- /dev/null +++ b/vue/home.html @@ -0,0 +1,63 @@ + +
+
+
+
+
+

Véhicule actuellement en circulation

+
+
+
+
+
+
+
+
+
+
+
+

Réservation instantané d'un véhicule

+
+
+
+
+
+ +
+
+ +
+
+
+
+ + +
+
+ +
+
+
+
+
+
+
+
+
+

Mon planning de réservation +

+
+
+
+
+
+
+
+ \ No newline at end of file diff --git a/vue/inscription.html b/vue/inscription.html new file mode 100644 index 0000000..9f19295 --- /dev/null +++ b/vue/inscription.html @@ -0,0 +1,53 @@ + +
+
+
+
+
+

Inscription

+
+
+
+
+
+ +
+
+ +
+
+
+ +
+
+ +
+
+
+ +
+
+ +
+
+
+ +
+
+ +
+

+
+
+
+

+
+ +
+
+
+
+
+
+
+ \ No newline at end of file diff --git a/vue/policy.html b/vue/policy.html new file mode 100644 index 0000000..8678a27 --- /dev/null +++ b/vue/policy.html @@ -0,0 +1,39 @@ + +
+

Politique de confidentialité


+
+
+
Collecte des renseignements personnels
+

Les renseignements personnels que nous collectons sont recueillis au travers de formulaires et grâce à l'interactivité établie entre vous et notre site Web.
+ Nous utilisons également, comme indiqué dans la section suivante, des fichiers témoins et/ou journaux pour réunir des informations vous concernant.

+
Formulaires et interactivité:
+

Vos renseignements personnels sont collectés par le biais de formulaire, à savoir :
+ - Formulaire d'inscription au site Web
+ Nous utilisons les renseignements ainsi collectés pour les finalités suivantes :
+ - Contact

+
Droit d'opposition et de retrait
+

Nous nous engageons à vous offrir un droit d'opposition et de retrait quant à vos renseignementspersonnels.
+ Le droit d'opposition s'entend comme étant la possibilité offerte aux internautes de refuser que leurs renseignements personnels soient utilisés à certaines fins mentionnées lors de la collecte.
+ Le droit de retrait s'entend comme étant la possibilité offerte aux internautes de demander à ce que leurs renseignements personnels ne figurent plus, par exemple, dans une liste de diffusion.

+
Droit d'accès
+

Nous nous engageons à reconnaître un droit d'accès et de rectification aux personnes concernées désireuses de consulter, modifier, voire radier les informations les concernant.

+
Sécurité
+

Les renseignements personnels que nous collectons sont conservés dans un environnement sécurisé.
+ Les personnes travaillant pour nous sont tenues de respecter la confidentialité de vos informations.
+ Pour assurer la sécurité de vos renseignements personnels, nous avons recours aux mesures suivantes :
+ - Gestion des accès - personne autorisée
+ - Gestion des accès - personne concernée
+ - Logiciel de surveillance du réseau
+ - Sauvegarde informatique
+ - Développement de certificat numérique
+ - Identifiant / mot de passe
+ - Pare-feu (Firewalls)
+ Nous nous engageons à maintenir un haut degré de confidentialité en intégrant les dernières innovations technologiques permettant d'assurer la confidentialité de vos transactions.
+ Toutefois,comme aucun mécanisme n'offre une sécurité maximale, une part de risque est toujours présente lorsque l'on utilise Internet pour transmettre des renseignements personnels.

+
Législation
+

Nous nous engageons à respecter les dispositions législatives françaises

+
E-mail: info@security.org
+
+
+
+ \ No newline at end of file diff --git a/vue/profile_view.html b/vue/profile_view.html new file mode 100644 index 0000000..eb64e6f --- /dev/null +++ b/vue/profile_view.html @@ -0,0 +1,65 @@ + +
+
+
+
+
+

Profil

+
+
+
+
+ +
+ +
+

+
+ +
+ +
+

+
+ +
+ +
+

+
+ +
+ +
+

+
+ +
+ +
+

+
+ +
+ +
+

+
+ +
+ +
+

+
+ +
+ Aucun avatar +
+
+
+
+
+
+
+
+ \ No newline at end of file