Compare commits

..

49 Commits

Author SHA1 Message Date
Emre KARTAL ef76d0c267 Clean code
2 years ago
Emre KARTAL 643da050ce Fixed pagination error 🐛
2 years ago
Emre KARTAL 56b2dbc22b Fixed README.md file and performed database export, probably the last push ever
3 years ago
Emre KARTAL f721a028c8 Optimization of the code and respect of the coding standard, the project is finished
3 years ago
Emre KARTAL e2bd0457ab Fixed all issues
3 years ago
Rayhân HASSOU 09bfc508d4 next et previous page liste prive, réglages bug
3 years ago
Rayhân HASSOU 4ddfc272e5 next et previous page liste prive, réglages bug
3 years ago
Emre KARTAL b7cf2744b8 README completed and Admin finished
3 years ago
Rayhân HASSOU 786b0addfb modification et correction de bug
3 years ago
Rayhân HASSOU a60f4d6d84 ajout liste prive
3 years ago
Emre KARTAL da609c6f81 Cookie for the pagination done, improvement of the visual and css for a task done
3 years ago
Emre KARTAL 82c7a9fc22 Cookie for pagination done (some small issue though) and profile page finished, also I made the views code cleaner
3 years ago
Rayhân HASSOU 10af9c567b Merge reussi : réglage des conflits. Nouvelles fonctionnalités : Ajout,Edition d'une liste; Ajout d'une tache
3 years ago
Rayhân HASSOU 0dbc9d274e ajout liste
3 years ago
Rayhân HASSOU 9419d45429 ajout liste
3 years ago
Rayhân HASSOU cd5b95f364 ajouter tache et modifier liste marche
3 years ago
Emre KARTAL bef27714ca Management of errors during registration (unique nickname, unique email, verification of special characters, size of name and first name more than 3 letters...)
3 years ago
Rayhân HASSOU 2f4af55635 ajout progress bar + erreur bd
3 years ago
Emre KARTAL 7bc62f2ba7 Realization of a logout pop-up in javascript and automatic connection during registration
3 years ago
Emre KARTAL 9b611a7cc5 Logout, user profile page and deletion of their account have been done, also the generic front controller now works perfectly
3 years ago
Emre KARTAL 78b18d3825 Revert "Logout, user profile page and deletion of their account have been done, also the generic front controller now works perfectly"
3 years ago
Emre KARTAL 89d9495929 Revert "Logout, user profile page and deletion of their account have been done, also the generic front controller now works perfectly"
3 years ago
Emre KARTAL 1bc41c7880 Logout, user profile page and deletion of their account have been done, also the generic front controller now works perfectly
3 years ago
Emre KARTAL 6fddf5a462 [200~Logout, user profile page and deletion of their account have been done, also the generic front controller now works perfectly
3 years ago
Emre KARTAL 1996c6f195 The connection as a user works and also the error management in case of bad password or identifier
3 years ago
Emre KARTAL eb24736d32 Small push, improvement of the visual of the "erreur.php" and "PageListPublic.php" pages
3 years ago
Rayhân HASSOU c7ad29522d Merge pull request 'rayhan_affichage' (#11) from rayhan_affichage into master
3 years ago
Rayhân HASSOU 1fc3033846 reglage des conflits
3 years ago
Rayhân HASSOU f0f966a2bb affichage des listes publiques et supression des taches/listes
3 years ago
Emre KARTAL 4d0b02b9f8 Ajout du fichier .htaccess (Réecriture Url), Renommer tout les dossier et Classe sous forme Coding Standard, class Validation presque finie (mais fonctionne), trier tout les classes dans des sous-dossier (+ajout dans l autoloader), Page Inscription fonctionne mais ne fait pas la gestion des erreurs! Il me reste à finir le login et Inscription erreur
3 years ago
Emre KARTAL 0a40a33175 Arborescence du projet améliorer, Front Controlleur générique fait et créer les modeles visiteurs,utilisateurs et admin
3 years ago
Emre KARTAL 08ea2c146d Le CONTROLLER FONCTIONNEEEEEEEEEEEEEEEEEEE
3 years ago
Emre KARTAL de3fbfb47e Amélioration du code, vue, Controlleur...
3 years ago
Emre KARTAL d672c5132c Amélioration du visuel, Navbar réaliser pour qu il s adapte à l utilisateur et le visiteur, le modele et controleur est maintenant bien structurer, le problème reste l autoload
3 years ago
Emre KARTAL 5e1bdf09de Correction des erreurs, je te laisse voir l ancien push
3 years ago
Emre KARTAL 27f0e15458 Ajout d'un modele pour Utilisateur, j ai commencer à pouvoir inscrire une personne et que le formulaire d'inscription est bien vérifier, j ai changer les vues (design, nom, css...), J ai changer presque tout les classes de façon plus optimiser, j ai ajouter le FrontControleur.php!
3 years ago
Rayhân HASSOU 7d758156fd Ajout de la classe Liste et liste Gateway, affiachage de tache ne fonctionne pas
3 years ago
Emre KARTAL e45ee52b3c Transférer les fichiers vers 'doc/Diagrammes'
3 years ago
Emre KARTAL 1c059a4fd2 Supprimer 'doc/Diagrammes/DiagrammeClasse (1).drawio'
3 years ago
Emre KARTAL 97ceaa6925 Transférer les fichiers vers 'doc/Diagrammes'
3 years ago
Emre KARTAL d61ea1b0ab Supprimer 'doc/Diagrammes/DiagrammeClasse.drawio'
3 years ago
Emre KARTAL f2d0dd6e54 J ai fait le UserGateway (possible qu il lui manque des méthodes), la classe TacheGateway est à refaire(je peut le faire), les problèmes que je rencontre sont :Faut-il l attribut id dans les classe, l attribut mot de passe pour l utilisateur comment hasher et dehasher le mdp et comme faire le frontController! Du coup je poserais des question aux profs! (Si t tout lu t un goat)
3 years ago
Emre KARTAL 7b4d66976a Transférer les fichiers vers 'doc'
3 years ago
Emre KARTAL 2d33f22155 Supprimer 'doc/Mld/Mld.drawio'
3 years ago
Emre KARTAL d0621eb53f Supprimer 'doc/Mld/Mld.png'
3 years ago
Emre KARTAL b8bc2156ca Supprimer 'doc/Maquette/Inscription.pdf'
3 years ago
Emre KARTAL eb62c61f2a Amélioration de la page home seh maintenant c est style et j en ai marre d être le goat sérieux 💪
3 years ago
Emre KARTAL 2f754ae7a8 J ai mis un navbar sur la page Home
3 years ago
Rayhân HASSOU fdc0578914 ajout gateway
3 years ago

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

@ -1,8 +1,10 @@
# Presentation Projet_ToDoList_Php
**<p align="center">
<div align = center>
![Image de l'application](Logo.png)
</p>**
</div>
**Nom de lapplication** : ToDoList
</br>
@ -14,22 +16,67 @@
</br>
:information_source: Réaliser un projet de PHP consistant à faire une To do List, qui contiendra des visiteurs ou utilisateurs.
:information_source: Réaliser un projet de PHP consistant à faire une To do List, qui contiendra des visiteurs, utilisateurs ou administrateur.
# Fonctionnalités
# Repartition du Gitlab
- Visiteur :
- Ajouter/Supprimer une liste publique
- Modifier une liste publique
- Ajouter/Supprimer des tâches dans une liste publique
- Se connecter
- S'inscrire
- Cocher une tâche d'une liste publique
La racine de notre gitlab est composé de deux dossiers essentiels au projet:
- Utilisateur (en plus des fonctionnalités visiteurs) :
- Ajouter/Supprimer une liste priver
- Modifier ses listes privées
- Ajouter/Supprimer des tâches à ses listes privé
- Voir son profil
- Supprimer son compte (Toutes ces tâches sont aussi supprimées)
- Modifier son mode de passe
- voir ses informations (Nom/Prénom/mail/Nombre de liste privé réalisé)
- Cocher une tâche d'une liste privé
- Administrateur (considérer comme un utilisateur, mais avec des droits en plus) :
- Voir tous les utilisateurs
- Supprimer un utilisateur
# Répartition du Gitlab
La racine de notre gitlab est composée de deux dossiers essentiels au projet:
[**src**](src) : **Toute la partie codage du site web**
[**doc**](doc) : **Documentation de l'application, englobant la phase avant le commencement de l'application (Maquette, Diagramme de classe UML)**
[**doc**](doc) : **Documentation de l'application, englobant la phase avant le commencement de l'application (Maquette, Diagramme de classe UML, Diagramme de classe)**
# Environnement de Travail
Notre environnement de travail se base essentiellement sur du php et du HTML/CSS.
Notre environnement de travail se base sur plusieurs outils :
<div align = center>
---
&nbsp; ![HTML](https://img.shields.io/badge/HTML-000?style=for-the-badge&logo=html5&logoColor=white&color=orange)
&nbsp; ![CSS](https://img.shields.io/badge/CSS-000?style=for-the-badge&logo=css3&logoColor=white&color=darkblue)
&nbsp; ![PHP](https://img.shields.io/badge/PHP-000?style=for-the-badge&logo=Php&logoColor=white&color=purple)
&nbsp; ![PHPMYADMIN](https://img.shields.io/badge/phpMyAdmin-000?style=for-the-badge&logo=PhpMyAdmin&logoColor=blue&color=orange)
---
</div>
# Technicien en charge de l'application
La composition pour le projet se voit réaliser par deux élèves de l'IUT d'aubière:
- Emre KARTAL (Groupe 4)
- Rayhan HASSOU (Groupe 4)
La composition pour le projet se voit réaliser par deux élèves de l'IUT d'Aubière:
<br>
⚙️ Emre KARTAL
<br>
⚙️ Rayhan HASSOU
<br>
<div align = center>
© Groupe 4
</div>

@ -0,0 +1,235 @@
-- phpMyAdmin SQL Dump
-- version 5.0.4deb2
-- https://www.phpmyadmin.net/
--
-- Hôte : localhost
-- Généré le : ven. 16 déc. 2022 à 22:44
-- Version du serveur : 10.5.15-MariaDB-0+deb11u1
-- Version de PHP : 7.4.28
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Base de données : `dbemkartal1`
--
-- --------------------------------------------------------
--
-- Structure de la table `MaTable`
--
CREATE TABLE `MaTable` (
`Id` int(11) NOT NULL,
`Nom` varchar(40) NOT NULL,
`Prenom` varchar(40) NOT NULL,
`Aigritude` int(11) NOT NULL,
`Age` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='J''en ai marre d''être le goat';
--
-- Déchargement des données de la table `MaTable`
--
INSERT INTO `MaTable` (`Id`, `Nom`, `Prenom`, `Aigritude`, `Age`) VALUES
(1, 'Kartal', 'Emre', 2, 18),
(2, 'Hassou', 'Rayhan', 4, 15),
(3, 'Skeleton', 'Armure', 150, 5),
(10, 'Khedair', 'Rami', 17, 20);
-- --------------------------------------------------------
--
-- Structure de la table `ToDoList_Admin`
--
CREATE TABLE `ToDoList_Admin` (
`idAdmin` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- Déchargement des données de la table `ToDoList_Admin`
--
INSERT INTO `ToDoList_Admin` (`idAdmin`) VALUES
(50),
(58);
-- --------------------------------------------------------
--
-- Structure de la table `ToDoList_Liste`
--
CREATE TABLE `ToDoList_Liste` (
`id` int(11) NOT NULL,
`nom` varchar(50) NOT NULL,
`description` varchar(200) NOT NULL,
`dateCreation` date NOT NULL,
`estPublic` tinyint(1) NOT NULL,
`idUtilisateur` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- Déchargement des données de la table `ToDoList_Liste`
--
INSERT INTO `ToDoList_Liste` (`id`, `nom`, `description`, `dateCreation`, `estPublic`, `idUtilisateur`) VALUES
(124, 'Iut', 'Ma liste de devoirs', '2022-12-16', 1, 1),
(125, 'Serie', 'Les series à regarder', '2022-12-16', 1, 1),
(150, 'Fourniture Scolaire', 'Mes fournitures Scolaires à acheter avant septembre', '2022-12-06', 1, NULL),
(155, 'Supermarché', 'Acheter les courses au Supermarché', '2022-12-02', 1, NULL),
(156, 'Ordinateur', 'Les composants pour mon ordinateur', '2022-12-03', 1, NULL);
-- --------------------------------------------------------
--
-- Structure de la table `ToDoList_Tache`
--
CREATE TABLE `ToDoList_Tache` (
`id` int(11) NOT NULL,
`nom` varchar(50) NOT NULL,
`description` varchar(200) NOT NULL,
`dateCreation` date NOT NULL,
`estValide` tinyint(1) NOT NULL,
`idListe` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- Déchargement des données de la table `ToDoList_Tache`
--
INSERT INTO `ToDoList_Tache` (`id`, `nom`, `description`, `dateCreation`, `estValide`, `idListe`) VALUES
(139, 'Blazor', 'Finir le projet', '2022-12-16', 0, 124),
(140, 'Sae', 'Faire le rapport', '2022-12-16', 1, 124),
(141, 'Breaking Bad', 'Le top 1', '2022-12-16', 0, 125),
(142, 'The Walking Dead', 'Meme si apres la saison 7 cest pas ouf', '2022-12-16', 0, 125),
(145, 'ProgSys', 'Finir le tp', '2022-12-16', 0, 124);
-- --------------------------------------------------------
--
-- Structure de la table `ToDoList_Utilisateur`
--
CREATE TABLE `ToDoList_Utilisateur` (
`id` int(11) NOT NULL,
`nom` varchar(50) NOT NULL,
`prenom` varchar(50) NOT NULL,
`pseudo` varchar(50) NOT NULL,
`email` varchar(50) NOT NULL,
`motDePasse` varchar(150) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- Déchargement des données de la table `ToDoList_Utilisateur`
--
INSERT INTO `ToDoList_Utilisateur` (`id`, `nom`, `prenom`, `pseudo`, `email`, `motDePasse`) VALUES
(1, 'Kartal', 'Emre', 'Malleo', 'emre.kartal10@etu.uca.fr', '00000'),
(50, 'Rayhan', 'Hassou', 'rayhan', 'hassourayhan1@gmail.com', '$2y$10$cKfV6KB7siPhwMRbpoS/COMaZQKkYETj.HIQ5YWkrbc5qXo.9jvuK'),
(51, 'Lucas', 'Mielkarek', 'lukaka', 'lucas@gmail.com', '$2y$10$5AlX0WcLx.8r/WCxxcBeuOaeGTzftqk3jn9q2cKMZkft313y2a3.C'),
(57, 'Restitutio', 'Mathieu', 'marestituito', 'Matthieu.RESTITUITO@uca.fr', '$2y$10$RNj8XMe5UDWDuiocwwg.g../8powrKKNpQ1FmPzSBoN9JubfjYrIq'),
(58, 'Admin', 'Prof', 'Admin', 'Matthieu.RESTITUITO@admin.fr', '$2y$10$oE5jSXemC4NrKiQE9EUKYeO1RdTpbeXxj/FaayeVciBQxYdxsmNuW');
--
-- Index pour les tables déchargées
--
--
-- Index pour la table `MaTable`
--
ALTER TABLE `MaTable`
ADD PRIMARY KEY (`Id`);
--
-- Index pour la table `ToDoList_Admin`
--
ALTER TABLE `ToDoList_Admin`
ADD KEY `idAdmin` (`idAdmin`);
--
-- Index pour la table `ToDoList_Liste`
--
ALTER TABLE `ToDoList_Liste`
ADD PRIMARY KEY (`id`),
ADD KEY `ToDoList_Liste_ibfk_1` (`idUtilisateur`);
--
-- Index pour la table `ToDoList_Tache`
--
ALTER TABLE `ToDoList_Tache`
ADD PRIMARY KEY (`id`),
ADD KEY `ToDoList_Tache_ibfk_1` (`idListe`);
--
-- Index pour la table `ToDoList_Utilisateur`
--
ALTER TABLE `ToDoList_Utilisateur`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `email` (`email`),
ADD UNIQUE KEY `pseudo` (`pseudo`);
--
-- AUTO_INCREMENT pour les tables déchargées
--
--
-- AUTO_INCREMENT pour la table `MaTable`
--
ALTER TABLE `MaTable`
MODIFY `Id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=46;
--
-- AUTO_INCREMENT pour la table `ToDoList_Liste`
--
ALTER TABLE `ToDoList_Liste`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=157;
--
-- AUTO_INCREMENT pour la table `ToDoList_Tache`
--
ALTER TABLE `ToDoList_Tache`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=152;
--
-- AUTO_INCREMENT pour la table `ToDoList_Utilisateur`
--
ALTER TABLE `ToDoList_Utilisateur`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=59;
--
-- Contraintes pour les tables déchargées
--
--
-- Contraintes pour la table `ToDoList_Admin`
--
ALTER TABLE `ToDoList_Admin`
ADD CONSTRAINT `ToDoList_Admin_ibfk_1` FOREIGN KEY (`idAdmin`) REFERENCES `ToDoList_Utilisateur` (`id`);
--
-- Contraintes pour la table `ToDoList_Liste`
--
ALTER TABLE `ToDoList_Liste`
ADD CONSTRAINT `ToDoList_Liste_ibfk_1` FOREIGN KEY (`idUtilisateur`) REFERENCES `ToDoList_Utilisateur` (`id`) ON DELETE CASCADE;
--
-- Contraintes pour la table `ToDoList_Tache`
--
ALTER TABLE `ToDoList_Tache`
ADD CONSTRAINT `ToDoList_Tache_ibfk_1` FOREIGN KEY (`idListe`) REFERENCES `ToDoList_Liste` (`id`) ON DELETE CASCADE;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

@ -0,0 +1 @@
<mxfile host="app.diagrams.net" modified="2022-11-29T17:20:13.880Z" agent="5.0 (Windows)" version="20.6.0" etag="gG6WG0mNFjTJEFq49oK-"><diagram id="m6SvVhZh1tycoRW3iEHN" name="Page-1">7ZvbcpswEIafhst2LDC2cxmTtJ3JoZm6h5neKSCDGoFcIcdOnr4rEGBQ0ubQWL7QjGeCflZC2v2E2cXxgijffhR4lV3whDDPHyVbLzjxfB+h8Qz+KOWuViZTLaSCJtqoExb0nmhxpNU1TUjZM5ScM0lXfTHmRUFi2dOwEHzTN1ty1r/qCqfEEBYxZqb6gyYyq9WZP+30T4SmWXNlNDmqz+S4MdYrKTOc8M2OFJx6QSQ4l/VRvo0IU85r/FL3+/DI2XZighTyKR2WLLj6vYh/Tj9/vQ389Nfl5dnZOz3KLWZrveCvOM6InrG8a9xQbmjOcAGt+ZIXcqHPjKAdZ5Ql5/iOr9U0Sonjm6Y1z7ig92CPGZxCIMBpIXWUg1HPYqF66jEFKcHmqlkbGkgXeNszPMelbGbDGcOrkl5X81MdcyxSWsy5lDzXRpuMSrJY4VjZbABcNRGZN5PUPiFCku2jzkZtCIF9wnMixR2Y6A5t1DX2Lc+bDiI01lq2A1BriDW4aTt2F1s40OF9Rqh9I9SeP2EqSms4SNUB9NcSXKFVDRjALbKKpeA3JOKMC9ALXtNBGRtImNG0gCYjS9VN+ZXCBjvWck6TRI08LyEgtEjPK7OTcad80e5REofuS1btoww6EhhhvuK0kJW7wjl8wIHR6H3ohTDXCNqoa8NHmQsZ8QKmj2kVTQL4bIhCaC64xBJft3D/D1Ie33gmPhqX4Im0BG8FS2DAUsDucSDsG4SJbRDGBggnpIwFXUnKCwfE3oE4sg3ExAQCSxIJgh0RVohAvm0k0NRgAjz0HWKZeFHgHR+Zz5MOizfHIrSNhUmF5wc0OaeldEBYAGJmG4iZAcTDLLhk83nJZjg+uGTzyCWbB3RjmB12stlQ6LJNyyRYzzaRWY906aZNIqynm8gsW7p80yoS9vNN3+WbB4iF9XwTmUXrKuGs7hVkLRwU+4fCes6JzHqlwQEpkmP1qhhaMcNlSeO+dwRfFwlJtCvr7iQx3hsP0jW4BF+LmPxtcrUdpKkpeYGTd5waPuDTRhOEwXflbX+6DzlaX+FKYdhll0HYzy4DfxCrepm6l7/zAnow0Hg0SFOng4FqPxgDVXFvl/0KFMz6wzdJGS0fvju4KsTrqhDh9Il7/+2qEMiVIQ7puwIdeB2iubG5OoRtFKwXInyzELGCJTkabNBgvQjRPDPu0lCSdcIdDfun4QDqD2aieZpjyhwNFmiwXnbwQ4OGCy5P4Lm9LF0hygYS1osO/iEXHXQW/M+iw2Ne3lPVYTLIJsNBsJ5cdUCDgUaDgV5cdYBm9+v92rz7H4jg9A8=</diagram></mxfile>

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

@ -1 +1 @@
<mxfile host="app.diagrams.net" modified="2022-11-18T08:49:01.889Z" agent="5.0 (X11)" etag="V0TgOB312a1JtrdcmcmG" version="20.4.0" type="device"><diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">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</diagram></mxfile>
<mxfile host="app.diagrams.net" modified="2022-11-29T22:01:04.454Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36" etag="p4d9js68z-fKG3dQp_s_" version="20.6.0" type="device"><diagram id="EhPrNy5HpteiR21U6QY4" name="Page-1">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</diagram></mxfile>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

After

Width:  |  Height:  |  Size: 118 KiB

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
<mxfile host="app.diagrams.net" modified="2022-11-15T17:50:34.293Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36" etag="7yO7rOtHmAhlMZaJAtLY" version="20.5.3" type="device"><diagram id="EhPrNy5HpteiR21U6QY4" name="Page-1">7Zxdb9s2FIZ/jS87WKLlj8vYzdYB6RbUKwr0JmAk2uJCiR5FxU5//Q4l0rJEJ3HTWnQBAgYiHZEUxfOQ1Hl1kAFaZLs/BN6kH3lC2CAcJrsBej8Iw2A8QfBHWZ5qywyNasNa0EQXagxL+o1o41BbS5qQolVQcs4k3bSNMc9zEsuWDQvBt+1iK87ad93gNbEMyxgz2/qFJjKtrdNw0tg/ELpOzZ2D8ay+kmFTWD9JkeKEbw9M6HqAFoJzWR9luwVhavDMuNT1fn/m6r5jguTylApf0+T6c/Zvju7m+Ot8lo6msnynW3nErNQP/LkgQndYPplRKLY0YziHs/mK53KprwzhPE4pS27wEy9VLwqJ4wdzNk+5oN+gPGZwKQADXBZSOxkNWyWWqqZuU5ACytyaRws6po941yp4gwtpesMZw5uC3lf9UxUzLNY0n3MpeaYLbVMqyXKDY1VmC9yqjsjMdFIPCRGS7J4d62DvQUCf8IxI8QRFdIU9vpr6cKjPtw1DwUjb0gN+9hWx5na9b7txLRxo736Hp0PL04NwzJSXSjhYqwOor01wh73VggGGRVa+FPyBLDjjAuw5r+mgjHVMmNF1DqeMrFQ1Na4U5teVNmc0SVTL8wIcQvP1TVXs/aixfNLDo0wcqq9YNY1SqEighfmG01xWwxXN4QcDuBj+Fg0i6OsCzoPmHH6quJALnkP3Ma28SQCfLVEIzQWXWOL7Pdw/g5Tn552Nj8YFnUgLOhcskQXLpiBlwj0LvbMwds0CslhYUVHIv3BGPA694zBzjcPIwiH3JLggIQhdozC2UMgwZR6F/lGIXKMwsV8YcFFsuUg8Dv3jMHWNw9TC4R9cPPiw8gfDytH44sLKmQ8rL2hdmF52WGkoPKAlIUUs6EZSnnsieifCeXAZ2AJkgiVZCII9Ek6QcB5gBrZSqZC4zv2rZP80uA8yA1t/osWtoI/AhAeifyCch5qBLU4PQvRncherTYPbH688FGeHwnnAGdhalMUByZMr9UUYzmKGi4LG7dERvMwTkuihrKuTxPo83AnW4Ba8FDF5bfDCIQSpa/KGqP5gUKMjY2psgjB4Z3psd/fYQOs73CoMm9gy6nyyHHV9VT+mrhUefGfuNtQJUtG001A9DlZDld/3j/0DKNha1FWSUftd0qsP36c+dPx66kYwPtecD+1oEjaCI/LDnfa/FyH6EScnL24WzlWI0I45L2evMKvXr7VZWM5662YR9LxZGNf7BKifnACFOpvF5FSlenS2aW8Hkl6qdrdL1DPvgncJO9HB50C5osG5Th3aooPPgnIIhHOVOrQFB58H5YYF9xp1aEsOPhPKEQzO9enQTn7xuVAOgXCuTZubtb5gHZckPQ9n52GfCuVugbBzpnx23En+fiU7zsx0ozlMo9M8fb7sOGRPfa85OFwaZi8uDc41B3QkG8rnx7lEwrnwgGyB2ifIuWXCufaAbCXbZ8g5w8G9/IBsqdqnyLkkwrkGgXyO3OVR4VyIQJecJGei4lcTH56L73vKfOh82J4OO946OfOhE61Ook5DZ858GB3LgqnjUKU2tKgY/1dyc+FdUSkJV1AgHG92FQTmehO81g3dG8Pfnw5i3PtuMbDVt3w59D2g0Kw/MWBGxEsrUCVWHMz+9sKi1g5cSl4/k1ZLTlsCT1onXhEshm0EoiNvEuMjKL8hRQJOm/80VCPU/L8mdP0/</diagram></mxfile>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

@ -0,0 +1,34 @@
#--------------------------------
# Config
#--------------------------------
Options +FollowSymlinks
RewriteEngine On
#---------------------------------
# Règles de réécriture d'url
#---------------------------------
# Visiteur
RewriteRule ^login$ index.php?action=redirectionLogin [L]
RewriteRule ^inscription$ index.php?action=redirectionInscription [L]
RewriteRule ^VueListePublic$ index.php?action=redirectionListePublic [L]
RewriteRule ^previousPage$ index.php?action=pagePrécédente [L]
RewriteRule ^nextPage$ index.php?action=pageSuivante [L]
RewriteRule ^check$ index.php?action=check [L]
# Utilisateur
RewriteRule ^logout$ index.php?action=logout [L]
RewriteRule ^MonProfil$ index.php?action=redirectionProfil [L]
RewriteRule ^supprimerCompte$ index.php?action=supprimerCompte [L]
RewriteRule ^listePrive$ index.php?action=listePrive [L]
RewriteRule ^previousPagePrive$ index.php?action=pagePrécédentePrive [L]
RewriteRule ^nextPagePrive$ index.php?action=pageSuivantePrive [L]
RewriteRule ^checkPrive$ index.php?action=checkPrive [L]
# Admin
RewriteRule ^users$ index.php?action=redirectionVueUtilisateur [L]

@ -1,91 +0,0 @@
<?php
namespace controleur;
class Controleur {
function __construct() {
global $rep,$vues; // nécessaire pour utiliser variables globales
// on démarre ou reprend la session
session_start();
//debut
//on initialise un tableau d'erreur
$dVueEreur = array ();
try{
$action=$_REQUEST['action'];
switch($action) {
//pas d'action, on réinitialise 1er appel
case NULL:
$this->Reinit();
break;
case "validationFormulaire":
$this->ValidationFormulaire($dVueEreur);
break;
//mauvaise action
default:
$dVueEreur[] = "Erreur d'appel php";
require ($rep.$vues['vuephp1']);
break;
}
} catch (PDOException $e)
{
//si erreur BD, pas le cas ici
$dVueEreur[] = "Erreur inattendue!!! ";
require ($rep.$vues['erreur']);
}
catch (Exception $e2)
{
$dVueEreur[] = "Erreur inattendue!!! ";
require ($rep.$vues['erreur']);
}
//fin
exit(0);
}//fin constructeur
function Reinit() {
global $rep,$vues;
$dVue = array (
'nom' => "",
'age' => 0,
);
require ($rep.$vues['vuephp1']);
}
function ValidationFormulaire(array $dVueEreur) {
global $rep,$vues;
//si exception, ca remonte !!!
$nom=$_POST['txtNom']; // txtNom = nom du champ texte dans le formulaire
$age=$_POST['txtAge'];
\config\Validation::val_form($nom,$age,$dVueEreur);
$model = new \Modele\Simplemodel();
$data=$model->get_data();
$dVue = array (
'nom' => $nom,
'age' => $age,
'data' => $data,
);
require ($rep.$vues['vuephp1']);
}
}//fin class
?>

@ -1,18 +0,0 @@
<?php
namespace modeles;
class Tache
{
private string $nom;
private string $description;
private Date $dateCreation;
private bool $estValide;
public function __construct(String $nom, string $description, Date $dateCreation){
$this->nom = $nom;
$this->description = $description;
$this->dateCreation = $dateCreation;
$this->estValide = false;
}

@ -1,24 +0,0 @@
<?php
namespace modeles;
class Utilisateur
{
private string $nom;
private string $prenom;
private string $pseudo
private string $email;
private string $motDePasse;
private bool $isAdmin;
public function __construct(string $nom, string $prenom, string $pseudo, string $email,string $motDePasse, bool $isAdmin){
$this->nom = $nom;
$this->prenom = $prenom;
$this->pseudo = $pseudo;
$this->email = $email;
$this->motDePasse = $motDePasse;
$this->isAdmin = $isAdmin;
}
}
?>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 208 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 896 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

@ -1,89 +0,0 @@
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
/* HEADER */
.main-head{
background: #9AF7FF;
color: #ffffff;
}
a{
font-family: JetBrains Mono,Menlo,Droid Sans Mono,monospace;
}
nav{
min-height: 10vh;
display: flex;
}
nav ul{
display: flex;
flex: 1 1 40rem;
justify-content: space-around;
}
.main-logo img{
flex: 1 1 40rem;
}
/*Réseau sociaux*/
.social {
display: flex;
justify-content: center;
align-items: center;
flex-wrap: wrap;
}
.social a {
display: inline-block;
width: 20%;
height: 30%;
padding: 35%;
border-radius: 40%;
align-items: center;
justify-content: center;
color: white;
position: relative;
flex-shrink: 0;
transition: all .2s;
}
@media screen and (min-width: 768px) {
.social a:hover {
transform: scale(1.2) translateY(-5px);
}
}
.social a.facebook {
padding-top: 2%;
padding-left: 4%;
background: linear-gradient(45deg, #3b5998,#0078d7);
box-shadow: 0 4px 30px rgba(45, 98, 169, 1);
}
.social a.twitter {
padding-top: 2%;
padding-left: 4%;
background: linear-gradient(45deg, #1da1f2,#0e71c8);
box-shadow: 0 4px 30px rgba(19, 127, 212, 1);
}
.social a.instagram {
padding-top: 2%;
padding-left: 4%;
background: linear-gradient(45deg, #405de6,#5851db,#833ab4,#c13584,#e1306c,#fd1d1d);
box-shadow: 0 4px 30px rgba(120, 64, 190, 0.8);
}
.social a.gitlab {
padding-top: 2%;
padding-left: 4%;
background: linear-gradient(45deg, #FF9467,#DB4100);
box-shadow: 0 4px 30px rgba(255,148,103, 0.6);
}

@ -1,355 +0,0 @@
body {
background: linear-gradient(to right, #B7FBFB,#38B6FF);
font-family: sans-serif;
}
body::before {
content: '';
position: absolute;
background: rgba(255,255,255, .15);
inset: 0;
transform: rotate(-5deg);
z-index: -1;
}
.main-logo{
display: flex;
flex-direction: column;
margin-left: auto;
margin-right: auto;
align-items: center;
}
.text-box {
display: flex;
align-items: flex-start;
justify-content: flex-end;
}
.btn:link,
.btn:visited {
text-transform: uppercase;
text-decoration: none;
padding: 10px 15px;
display: inline-block;
border-radius: 100px;
font-size: 60%;
transition: all .2s;
position: absolute;
}
.btn:hover {
transform: translateY(-3px);
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
}
.btn:active {
transform: translateY(-1px);
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
}
.btn-white {
background-color: #fff;
color: #777;
}
.btn::after {
content: "";
display: inline-block;
height: 100%;
width: 100%;
border-radius: 100px;
position: absolute;
top: 0;
left: 0;
z-index: -1;
transition: all .4s;
}
.btn-white::after {
background-color: #fff;
}
.btn:hover::after {
transform: scaleX(1.5) scaleY(1.7);
opacity: 0;
}
.btn-animated {
animation: moveInBottom 5s ease-out;
animation-fill-mode: backwards;
}
.main-logo img{
width: 50%;
}
body fieldset {
box-shadow: 0 8px 10px #29a329;
}
body.error {
background: #f04000;
}
body.error fieldset {
box-shadow: 0 8px 10px #bd3200;
}
h2 {
position: absolute;
left: 50%;
transform: translateX(-50%);
font-family: sans-serif;
text-transform: uppercase;
letter-spacing: 2px;
}
h1 {
color: white;
font-size: 100%;
/*transform: translateX(-50%);*/
font-family: sans-serif;
text-transform: uppercase;
}
h2 {
top: 44px;
color: white;
font-size: 10px;
opacity: 0.7;
}
ul.items {
position: absolute;
width: 30px;
height: auto;
top: 50%;
left: -60px;
transform: translateY(-50%);
}
ul.items li {
width: 8px;
height: 8px;
margin: 10px 0;
background: white;
border-radius: 50%;
opacity: 0.4;
cursor: pointer;
}
ul.items li.active {
opacity: 1;
}
form {
position: absolute;
width: 300px;
height: 60px;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
form fieldset {
position: absolute;
width: 300px;
height: 60px;
background: white;
border-radius: 3px;
opacity: 0;
transform: scale(0.2);
transition: all 0.4s ease-in-out;
}
form fieldset input, form fieldset p {
display: inline-block;
width: 200px;
margin-left: 50px;
color: #333333;
font-size: 16px;
letter-spacing: 1px;
}
form fieldset p {
margin-top: 22px;
text-align: center;
}
form fieldset input {
height: 40px;
margin-top: 8px;
border: none;
outline: none;
}
form fieldset .icon {
position: absolute;
width: 30px;
height: 30px;
top: 15px;
transition: all 0.4s ease;
}
form fieldset .icon i {
position: absolute;
display: block;
}
form fieldset .icon i::before, form fieldset .icon i::after {
position: absolute;
content: "";
}
form fieldset .icon.left {
left: 10px;
}
form fieldset .icon.right {
right: 10px;
cursor: pointer;
}
form fieldset .icon.button:hover {
background: #f2f2f2;
border-radius: 3px;
transition: all 0.4s ease;
}
form fieldset.enable {
z-index: 1;
opacity: 1;
transition: all 0.5s ease-out 0.2s;
transform: scale(1);
animation: enable 0.5s ease-out 0.2s;
}
form fieldset.disable {
opacity: 0;
transition: all 0.3s ease-in;
transform: translateY(120px) scale(0.9);
}
body.error fieldset {
transform-origin: 50% 100%;
animation: error 0.3s ease-out;
}
@keyframes enable {
0% {
opacity: 0;
transform: scale(0.2);
}
60% {
transform: scale(1.1);
}
100% {
opacity: 1;
transform: scale(1);
}
}
@keyframes error {
0%, 50%, 100% {
transform: rotate(0deg);
}
25% {
transform: rotate(-3deg);
}
75% {
transform: rotate(3deg);
}
}
/**
* * Icons in CSS, long as f****
* */
.icon .arrow {
width: 2px;
height: 17px;
top: 5px;
left: 14px;
background: #333333;
}
.icon .arrow::before {
width: 6px;
height: 6px;
bottom: -1px;
left: -3px;
border-color: #333333;
border-right: 2px solid;
border-bottom: 2px solid;
transform: rotate(45deg);
}
.icon .user {
width: 20px;
height: 10px;
bottom: 5px;
left: 5px;
box-shadow: 0 0 0 2px #333333 inset;
border-radius: 6px 6px 3px 3px;
}
.icon .user::before {
width: 10px;
height: 10px;
top: -9px;
left: 5px;
box-shadow: 0 0 0 2px #333333 inset;
border-radius: 50%;
}
.icon .letter {
width: 20px;
height: 12px;
top: 9px;
left: 5px;
box-shadow: 0 0 0 2px #333333 inset;
border-radius: 3px;
}
.icon .letter::before, .icon .letter::after {
width: 11px;
height: 2px;
top: 4px;
background: #333333;
}
.icon .letter::before {
left: 0;
transform: rotate(30deg);
}
.icon .letter::after {
right: 0;
transform: rotate(-30deg);
}
.icon .lock {
width: 20px;
height: 16px;
top: 9px;
left: 5px;
box-shadow: 0 0 0 2px #333333 inset;
border-radius: 3px;
}
.icon .lock::before {
width: 8px;
height: 8px;
top: -4px;
left: 4px;
border: 2px solid transparent;
border-top: 2px solid #333333;
border-right: 2px solid #333333;
border-radius: 50%;
transform: rotate(-45deg);
}
.icon .lock::after {
width: 6px;
height: 7px;
top: 4px;
left: 7px;
box-shadow: 0 0 0 2px #333333 inset;
}
.icon .heart {
width: 10px;
height: 10px;
top: 11px;
left: 7px;
background: #ff5233;
transform: rotate(45deg);
}
.icon .heart::before, .icon .heart::after {
width: 10px;
height: 10px;
border-radius: 50%;
background: #ff5233;
}
.icon .heart::before {
left: -6px;
}
.icon .heart::after {
top: -6px;
}

@ -1,233 +0,0 @@
@import url('https://fonts.googleapis.com/css2?family=Nunito:wght@300;400;500;600;700&display=swap');
body {
font: 18px "Nunito", sans-serif;
color: black;
min-height: 100vh;
padding: 2rem;
display: flex;
justify-content: center;
align-items: center;
}
body::before {
content: '';
position: fixed;
inset: 0;
z-index: -1;
pointer-events: none;
background: url("../Images/Back(2).jpg") no-repeat center;
background-size: cover;
animation: backgroundZoomAnimate 20s forwards;
}
@keyframes backgroundZoomAnimate {
from {
transform: scale(1);
}
to {
transform: scale(1.3);
}
}
.profil-card {
box-shadow: 0 18px 200px -60px black;
border-radius: 50px;
width: 650px;
position: relative;
backdrop-filter: blur(15px);
border: 2px solid #ffffff40;
padding: 3rem 5rem;
display: flex;
flex-direction: column;
gap: 40px;
@media screen and (max-width: 768px) {
width: auto;
}
}
.profil-card__img img {
margin: auto;
width: 200px;
height: 200px;
border-radius: 50%;
object-fit: cover;
display: block;
box-shadow: 0 10px 60px -10px rgba(13,28,39,.5);
}
.profil-card__desc {
text-align: center;
display: flex;
flex-direction: column;
gap: 25px;
}
.localisation {
display: flex;
align-items:center;
gap:10px;
justify-content: center;
}
.profil-card__desc h1 {
font-size: 2.5rem;
font-weight: bold;
}
.profil-card__desc h1 + div {
font-size: 20px;
}
.info{
display: flex;
justify-content: center;
gap: 50px;
@media screen and (max-width: 576px) {
gap: 30px;
}
}
.info > div {
text-transform: uppercase;
font-weight: bold;
letter-spacing: 1px;
text-align: center;
}
.info > div > *:first-child {
font-weight: bold;
letter-spacing: 3px;
font-size: 2rem;
margin-bottom: 15px;
}
.info > div > *:last-child {
font-size: 16px;
opacity: .7;
}
.social {
display: flex;
justify-content: center;
align-items: center;
flex-wrap: wrap;
}
.social a {
display: inline-block;
width: 55px;
height: 55px;
margin: 15px;
border-radius: 40%;
align-items: center;
justify-content: center;
color: white;
position: relative;
flex-shrink: 0;
transition: all .2s;
@media screen and (max-width: 768px) {
width: 50px;
height: 50px;
margin: 10px;
}
}
@media screen and (min-width: 768px) {
.social a:hover {
transform: scale(1.2) translateY(-5px);
}
}
.social a.facebook {
padding-top: 15px;
padding-left: 15px;
background: linear-gradient(45deg, #3b5998,#0078d7);
box-shadow: 0 4px 30px rgba(45, 98, 169, 1);
}
.social a.twitter {
padding-top: 15px;
padding-left: 15px;
background: linear-gradient(45deg, #1da1f2,#0e71c8);
box-shadow: 0 4px 30px rgba(19, 127, 212, 1);
}
.social a.instagram {
padding-top: 15px;
padding-left: 15px;
background: linear-gradient(45deg, #405de6,#5851db,#833ab4,#c13584,#e1306c,#fd1d1d);
box-shadow: 0 4px 30px rgba(120, 64, 190, 0.8);
}
.social a.gitlab {
padding-top: 15px;
padding-left: 15px;
background: linear-gradient(45deg, #FF9467,#DB4100);
box-shadow: 0 4px 30px rgba(255,148,103, 0.6);
}
.actions {
display: flex;
align-items: center;
justify-content: center;
gap: 2rem;
@media screen and (max-width: 576px) {
flex-direction: column;
gap: 1.5rem;
}
}
.actions > button {
font-weight: bold;
font-size: 22px;
padding: 15px 0;
min-width: 250px;
border-radius: 50px;
text-align: center;
color: white;
cursor: pointer;
transition: all .2s;
@media screen and (max-width: 760px) {
min-width: 170px;
}
@media screen and (max-width: 576px) {
min-width: inherit;
width: 100%;
max-width: 350%;
}
}
@media screen and (min-width: 576px) {
.actions > button:hover {
transform: translateY(-5px);
}
}
.bleu{
background: linear-gradient(45deg, #1da1f2,#0e71c8);
box-shadow: 0 4px 30px rgba(19, 127, 212, 0.4);
}
.bleu:hover {
box-shadow: 0 7px 30px rgba(19, 127, 212, 0.75);
}
.orange {
background: linear-gradient(45deg, #d5135a,#f05924);
box-shadow: 0 4px 30px rgba(223, 45, 70, 0.35);
}
.orange:hover {
box-shadow: 0 7px 30px rgba(223,45,70,0.75);
}

@ -1,18 +0,0 @@
<html>
<head><title>Erreur</title>
</head>
<body>
<h1>ERREUR !!!!!</h1>
<?php
if (isset($dVueEreur)) {
foreach ($dVueEreur as $value){
echo $value;
}
}
?>
</body> </html>

@ -1,58 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Home Page</title>
<link rel="stylesheet" href="../css/home.css">
<link rel="stylesheet" href="../css/reset.css" />
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">
</head>
<body>
<header class="main-head">
<nav>
<div class="main-logo">
<img src="../Images/Logo.png" alt="logo">
</div>
<ul>
<li>
<a href="login.html">Se connecter</a>
</li>
<li>
<a>Profil</a>
</li>
</ul>
<div class="social">
<a href="#" class="facebook">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-facebook" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M7 10v4h3v7h4v-7h3l1 -4h-4v-2a1 1 0 0 1 1 -1h3v-4h-3a5 5 0 0 0 -5 5v2h-3"></path>
</svg>
</a>
<a href="#" class="twitter">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-twitter" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M22 4.01c-1 .49 -1.98 .689 -3 .99c-1.121 -1.265 -2.783 -1.335 -4.38 -.737s-2.643 2.06 -2.62 3.737v1c-3.245 .083 -6.135 -1.395 -8 -4c0 0 -4.182 7.433 4 11c-1.872 1.247 -3.739 2.088 -6 2c3.308 1.803 6.913 2.423 10.034 1.517c3.58 -1.04 6.522 -3.723 7.651 -7.742a13.84 13.84 0 0 0 .497 -3.753c-.002 -.249 1.51 -2.772 1.818 -4.013z"></path>
</svg>
</a>
<a href="#" class="instagram">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-instagram" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<rect x="4" y="4" width="16" height="16" rx="4"></rect>
<circle cx="12" cy="12" r="3"></circle>
<line x1="16.5" y1="7.5" x2="16.5" y2="7.501"></line>
</svg>
</a>
<a href="#" class="gitlab">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-gitlab" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M21 14l-9 7l-9 -7l3 -11l3 7h6l3 -7z"></path>
</svg>
</a>
</div>
</nav>
</header>
</body>
</html>

@ -1,54 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>Page d'inscription</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="../css/inscription.css">
<script type="text/javascript" src="../javaScript/inscription.js" defer></script>
</head>
<body>
<div class="text-box">
<a href="login.html" class="btn btn-white btn-animate">Revenir</a>
</div>
<div class="main-logo">
<img src="../Images/Logo.png" alt="logo">
<h1>Inscription</h1>
</div>
<form>
<ul class="items"></ul>
<fieldset class="username enable">
<div class="icon left"><i class="user"></i></div>
<input type="text" name="username" placeholder="Username"/>
<div class="icon right button"><i class="arrow"></i></div>
</fieldset>
<fieldset class="email">
<div class="icon left"><i class="letter"></i></div>
<input type="mail" name="email" placeholder="Email"/>
<div class="icon right button"><i class="arrow"></i></div>
</fieldset>
<fieldset class="password">
<div class="icon left"><i class="lock"></i></div>
<input type="password" name="password" placeholder="Password"/>
<div class="icon right button"><i class="arrow"></i></div>
</fieldset>
<fieldset class="thanks">
<div class="icon left"><i class="heart"></i></div>
<p>Merci pour votre inscription</p>
<div class="icon right"><i class="heart"></i></div>
</fieldset>
</form>
</body>
</html>

@ -1,78 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Page Profil</title>
<link rel="stylesheet" href="../css/profil.css">
<link rel="stylesheet" href="../css/reset.css" />
</head>
<body>
<div class="profil-card">
<figure class="profil-card__img">
<img src="../Images/avatar.jpeg" alt="Image Profil">
</figure>
<div class="profil-card__desc">
<h1>Ritchie Golozer</h1>
<div>front-end Developer</div>
<div style="localisation">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-map-pin" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<circle cx="12" cy="11" r="3"></circle>
<path d="M17.657 16.657l-4.243 4.243a2 2 0 0 1 -2.827 0l-4.244 -4.243a8 8 0 1 1 11.314 0z"></path>
</svg>
<span>Clermont-Ferrand</span>
</div>
</div>
<div class="social">
<a href="#" class="facebook">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-facebook" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M7 10v4h3v7h4v-7h3l1 -4h-4v-2a1 1 0 0 1 1 -1h3v-4h-3a5 5 0 0 0 -5 5v2h-3"></path>
</svg>
</a>
<a href="#" class="twitter">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-twitter" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M22 4.01c-1 .49 -1.98 .689 -3 .99c-1.121 -1.265 -2.783 -1.335 -4.38 -.737s-2.643 2.06 -2.62 3.737v1c-3.245 .083 -6.135 -1.395 -8 -4c0 0 -4.182 7.433 4 11c-1.872 1.247 -3.739 2.088 -6 2c3.308 1.803 6.913 2.423 10.034 1.517c3.58 -1.04 6.522 -3.723 7.651 -7.742a13.84 13.84 0 0 0 .497 -3.753c-.002 -.249 1.51 -2.772 1.818 -4.013z"></path>
</svg>
</a>
<a href="#" class="instagram">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-instagram" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<rect x="4" y="4" width="16" height="16" rx="4"></rect>
<circle cx="12" cy="12" r="3"></circle>
<line x1="16.5" y1="7.5" x2="16.5" y2="7.501"></line>
</svg>
</a>
<a href="#" class="gitlab">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-gitlab" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M21 14l-9 7l-9 -7l3 -11l3 7h6l3 -7z"></path>
</svg>
</a>
</div>
<div class="info">
<div>
<div>850</div>
<div>Followers</div>
</div>
<div>
<div>50</div>
<div>References</div>
</div>
<div>
<div>105</div>
<div>Works</div>
</div>
</div>
<div class="actions">
<button class="orange">Se déconnecter</button>
</div>
</div>
</body>
</html>

@ -1,53 +0,0 @@
function init() {
// Generate li foreach fieldset
for (var i = 0; i < count; i++) {
var ul = document.querySelector("ul.items"),
li = document.createElement("li");
ul.appendChild(li);
}
// Add class active on first li
ul.firstChild.classList.add("active");
}
function next(target) {
var input = target.previousElementSibling;
// Check if input is empty
if (input.value === "") {
body.classList.add("error");
} else {
body.classList.remove("error");
var enable = document.querySelector("form fieldset.enable"),
nextEnable = enable.nextElementSibling;
enable.classList.remove("enable");
enable.classList.add("disable");
nextEnable.classList.add("enable");
// Switch active class on left list
var active = document.querySelector("ul.items li.active"),
nextActive = active.nextElementSibling;
active.classList.remove("active");
nextActive.classList.add("active");
}
}
function keyDown(event) {
var key = event.keyCode,
target = document.querySelector("fieldset.enable .button");
if (key == 13 || key == 9) next(target);
}
var body = document.querySelector("body"),
form = document.querySelector("form"),
count = form.querySelectorAll("fieldset").length;
window.onload = init;
document.body.onmouseup = function (event) {
var target = event.target || event.toElement;
if (target.classList.contains("button")) next(target);
};
document.addEventListener("keydown", keyDown, false);

@ -1,96 +0,0 @@
<html>
<head><title>Personne - formulaire</title>
<script type="text/javascript">
function clearForm(oForm) {
var elements = oForm.elements;
oForm.reset();
for(i=0; i<elements.length; i++) {
field_type = elements[i].type.toLowerCase();
switch(field_type) {
case "text":
case "password":
case "textarea":
case "hidden":
elements[i].value = "";
break;
case "radio":
case "checkbox":
if (elements[i].checked) {
elements[i].checked = false;
}
break;
case "select-one":
case "select-multi":
elements[i].selectedIndex = -1;
break;
default:
break;
}
}
}
</script>
</head>
<body>
<?php
// on v<>rifie les donn<6E>es provenant du mod<6F>le
if (isset($dVue))
{?>
<div align="center">
<?php
if (isset($dVueEreur) && count($dVueEreur)>0) {
echo "<h2>ERREUR !!!!!</h2>";
foreach ($dVueEreur as $value){
echo $value;
}}
?>
<h2>Personne - formulaire</h2>
<hr>
<!-- affichage de donn<6E>es provenant du mod<6F>le -->
<?= $dVue['data'] ?>
<form method="post" name="myform" id"myform">
<table> <tr>
<td>Nom</td>
<td><input name="txtNom" value="<?= $dVue['nom'] ?>" type="text" size="20"></td>
</tr>
<tr><td>Age</td>
<td><input name="txtAge" value="<?= $dVue['age'] ?>" type="text" size="3" required></td>
</tr>
<tr>
</table>
<table> <tr>
<td><input type="submit" value="Envoyer"></td>
<td><input type="reset" value="Rétablir"></td>
<td><input type="button" value="Effacer" onclick="clearForm(this.form);">
</td> </tr> </table>
<!-- action !!!!!!!!!! -->
<input type="hidden" name="action" value="validationFormulaire">
</form></div>
<?php }
else {
print ("erreur !!<br>");
print ("utilisation anormale de la vuephp");
} ?>
<p>Essayez de mettre du code html dans nom -> Correspond à une attaque de type injection</p>
</body> </html>

@ -1,6 +1,5 @@
<?php
//prs0 compliant
class Autoload
{
private static $_instance = null;
@ -31,22 +30,19 @@ class Autoload
}
}
private static function _autoload($className)
private static function _autoload($class)
{
echo $className;
$folder = "./";
$className = ltrim($className, '\\');
$fileName = '';
$namespace = '';
if ($lastNsPos = strripos($className, '\\')) {
$namespace = substr($className, 0, $lastNsPos);
$className = substr($className, $lastNsPos + 1);
$fileName = str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR;
}
$fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';
include $folder . $fileName;
global $rep;
$filename = $class.'.php';
$dir =array('modele/','./','config/','controller/','modele/metier/','modele/gateway/');
foreach ($dir as $d){
$file=$rep.$d.$filename;
//echo $file;
if (file_exists($file))
{
include $file;
}
}
}
}

@ -0,0 +1,31 @@
<?php
class Connection extends PDO {
private $stmt;
public function __construct(string $dsn, string $username, string $password) {
parent::__construct($dsn,$username,$password);
$this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
/** * @param string $query
* @param array $parameters *
* @return bool Returns `true` on success, `false` otherwise
*/
public function executeQuery(string $query, array $parameters = []) : bool{
$this->stmt = parent::prepare($query);
foreach ($parameters as $name => $value) {
$this->stmt->bindValue($name, $value[0], $value[1]);
}
return $this->stmt->execute();
}
public function getResults() : array {
return $this->stmt->fetchall();
}
}

@ -1,155 +0,0 @@
<?php
/*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the MIT license. For more information, see
* <http://www.doctrine-project.org>.
*/
/**
* SplClassLoader implementation that implements the technical interoperability
* standards for PHP 5.3 namespaces and class names.
*
* http://groups.google.com/group/php-standards/web/psr-0-final-proposal?pli=1
*
* // Example which loads classes for the Doctrine Common package in the
* // Doctrine\Common namespace.
* $classLoader = new SplClassLoader('Doctrine\Common', '/path/to/doctrine');
* $classLoader->register();
*
* @license http://www.opensource.org/licenses/mit-license.html MIT License
* @author Jonathan H. Wage <jonwage@gmail.com>
* @author Roman S. Borschel <roman@code-factory.org>
* @author Matthew Weier O'Phinney <matthew@zend.com>
* @author Kris Wallsmith <kris.wallsmith@gmail.com>
* @author Fabien Potencier <fabien.potencier@symfony-project.org>
*/
class SplClassLoader
{
private $_fileExtension = '.php';
private $_namespace;
private $_includePath;
private $_namespaceSeparator = '\\';
/**
* Creates a new <tt>SplClassLoader</tt> that loads classes of the
* specified namespace.
*
* @param string $ns The namespace to use.
*/
public function __construct(string $ns = null, string $includePath = null)
{
$this->_namespace = $ns;
$this->_includePath = $includePath;
}
/**
* Sets the namespace separator used by classes in the namespace of this class loader.
*
* @param string $sep The separator to use.
*/
public function setNamespaceSeparator(string $sep)
{
$this->_namespaceSeparator = $sep;
}
/**
* Gets the namespace seperator used by classes in the namespace of this class loader.
*
* @return void
*/
public function getNamespaceSeparator()
{
return $this->_namespaceSeparator;
}
/**
* Sets the base include path for all class files in the namespace of this class loader.
*
* @param string $includePath
*/
public function setIncludePath(string $includePath)
{
$this->_includePath = $includePath;
}
/**
* Gets the base include path for all class files in the namespace of this class loader.
*
* @return string $includePath
*/
public function getIncludePath()
{
return $this->_includePath;
}
/**
* Sets the file extension of class files in the namespace of this class loader.
*
* @param string $fileExtension
*/
public function setFileExtension($fileExtension)
{
$this->_fileExtension = $fileExtension;
}
/**
* Gets the file extension of class files in the namespace of this class loader.
*
* @return string $fileExtension
*/
public function getFileExtension()
{
return $this->_fileExtension;
}
/**
* Installs this class loader on the SPL autoload stack.
*/
public function register()
{
spl_autoload_register(array($this, 'loadClass'));
}
/**
* Uninstalls this class loader from the SPL autoloader stack.
*/
public function unregister()
{
spl_autoload_unregister(array($this, 'loadClass'));
}
/**
* Loads the given class or interface.
*
* @param string $className The name of the class to load.
* @return void
*/
public function loadClass(string $className)
{
if (null === $this->_namespace || $this->_namespace.$this->_namespaceSeparator === substr($className, 0, strlen($this->_namespace.$this->_namespaceSeparator))) {
$fileName = '';
$namespace = '';
if (false !== ($lastNsPos = strripos($className, $this->_namespaceSeparator))) {
$namespace = substr($className, 0, $lastNsPos);
$className = substr($className, $lastNsPos + 1);
$fileName = str_replace($this->_namespaceSeparator, DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR;
}
$fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) . $this->_fileExtension;
require ($this->_includePath !== null ? $this->_includePath . DIRECTORY_SEPARATOR : '') . $fileName;
}
}
}

@ -1,40 +1,127 @@
<?php
namespace config;
class Validation {
static function val_action($action) {
static function val_form_user(string &$nom, string &$prenom, string &$pseudo, string &$mdp, string &$email, &$dVueErreur) {
//Vérification Nom
$nom = Validation::val_string($nom);
if ($nom == NULL) {
$dVueErreur['nom'] = "Le nom ne peut pas comporter de caractère spécial*";
}else if(strlen($nom)<3){
$dVueErreur['nom'] = "Le nom doit comporter au moins 3 caractères*";
}
//Vérification Prenom
$prenom = Validation::val_string($prenom);
if ($prenom == NULL) {
$dVueErreur['prenom'] = "Le prenom ne peut pas comporter de caractère spécial*";
}else if(strlen($prenom)<3){
$dVueErreur['prenom'] = "Le prenom doit comporter au moins 3 caractères*";
}
//Vérification Email
$email = Validation::val_mail($email);
if ($email == NULL) {
$dVueErreur['mail'] = "Format du mail non-respecter*";
}
//Vérification Pseudo
$pseudo = Validation::val_string($pseudo);
if ($pseudo == NULL) {
$dVueErreur['pseudo'] = "Le pseudo ne peut pas comporter de caractère spécial*";
}else if(strlen($pseudo)<5){
$dVueErreur['pseudo'] = "Le pseudo doit comporter au moins 5 caractères*";
}
if (!isset($action)) {
throw new Exception('pas d\'action');
//on pourrait aussi utiliser
//$action = $_GET['action'] ?? 'no';
// This is equivalent to:
//$action = if (isset($_GET['action'])) $action=$_GET['action'] else $action='no';
if (!preg_match('/^.{5,}$/', $mdp)) {
$dVueErreur['password'] = "Mot de passe trop léger : Plus de 5 caractères minimum !";
}
if(count($dVueErreur)>0){
throw new Exception("Erreur lors de l'inscription*");
}
}
static function val_form(string &$nom, string &$age, &$dVueEreur) {
if (!isset($nom)||$nom=="") {
$dVueEreur[] = "pas de nom";
$nom="";
static function cleanString(string &$str) {
$str = preg_replace('/[^A-Za-z\-]/', '', $str);
if($str == null || $str == '')
{
return null;
}
return $str;
}
if ($nom != filter_var($nom, FILTER_SANITIZE_STRING))
static function cleanPseudo(string &$str) {
$str = preg_replace('/[^A-Za-z\-\^0-9]/', '', $str);
if($str == null || $str == '')
{
$dVueEreur[] = "testative d'injection de code (attaque sécurité)";
$nom="";
return null;
}
return $str;
}
static function cleanMail(string &$str) {
$str = preg_replace('/[^A-Za-z\-\^0-9\.\@]/', '', $str);
if($str == null || $str == '')
{
return null;
}
return $str;
}
if (!isset($age)||$age==""||!filter_var($age, FILTER_VALIDATE_INT)) {
$dVueEreur[] = "pas d'age ";
$age=0;
static function val_form_add(string &$nom,string &$description,&$dVueErreur) {
$nom = Validation::cleanText($nom);
if ($nom == NULL) {
$dVueErreur['nom'] = "Veuillez entrer un nom*";
}
$description = Validation::cleanText($description);
if ($description == NULL) {
$dVueErreur['description'] = "Veuillez entrer une description*";
}
if(count($dVueErreur)>0){
throw new Exception("Problème lors de l'ajout");
}
}
static function cleanText(string &$txt) {
$txt = preg_replace('/[^A-Za-z\-\^0-9\ \à\é\^]/', '', $txt);
if($txt == null || $txt == '')
{
return null;
}
return $txt;
}
static function val_mail(string &$mail) {
if(filter_var($mail, FILTER_VALIDATE_EMAIL))
{
return $mail;
}
return null;
}
static function val_string(string &$str) {
if(filter_var($str, FILTER_SANITIZE_STRING)!=$str)
{
return null;
}
return $str;
}
static function cleanInt(string &$int) {
$int = preg_replace('/[^0-9]/', '', $int);
if($int == null || $int == '')
{
return null;
}
return intval($int);
}
}
?>

@ -3,24 +3,19 @@
//gen
$rep=__DIR__.'/../';
// liste des modules à inclure
//$dConfig['includes']= array('controleur/Validation.php');
//BD
$base="dbrahassou";
$login="rahassou";
$mdp="achanger";
$user='emkartal1';
$pass='achanger';
$dsn='mysql:host=londres.uca.local;dbname=dbemkartal1';
//Vues
$vues['erreur']='vues/erreur.php';
$vues['vuephp1']='vues/vuephp1.php';
$vues['inscription']='html/inscription.html';
$vues['login']='html/login.html';
$vues['profil']='html/profil.html';
$vues['erreur']='vue/html/erreur.php';
$vues['inscription']='vue/html/inscription.php';
$vues['listPublic']='vue/html/PageListePublic.php';
$vues['listPrive']='vue/html/PageListePrive.php';
$vues['login']='vue/html/login.php';
$vues['NavBar']='vue/html/NavBar.php';
$vues['profil']='vue/html/profil.php';
$vues['users']='vue/html/pageUtilisateur.php';
?>

@ -0,0 +1,71 @@
<?php
class CtrlAdmin {
function __construct() {
global $rep,$vues;
$dVueErreur = array ();
try{
$action=NULL;
if(isset($_REQUEST['action'])){
$action = $_REQUEST["action"];
}
switch($action) {
case NULL:
$this->ConsulterUtilisateurs($dVueErreur);
break;
case "redirectionVueUtilisateur":
$this->ConsulterUtilisateurs($dVueErreur);
break;
case "SupprimerUtilisateur":
$this->SupprimerUtilisateur($dVueErreur);
break;
default:
$dVueErreur[] = "Erreur d'appel php";
require ($rep.$vues['erreur']);
break;
}
} catch (PDOException $e)
{
//si erreur BD, pas le cas ici
$dVueErreur[] = "Erreur BD!!! ";
require ($rep.$vues['erreur']);
}
catch (Exception $e2)
{
$dVueErreur[] = "Erreur inattendue!!! ";
require ($rep.$vues['erreur']);
}
//fin
exit(0);
}//fin constructeur
public function ConsulterUtilisateurs(array $dVueErreur){
global $rep,$vues;
$users = MdlAdmin::recupererUtilisateur();
$action=NULL;
require ($rep.$vues['users']);
}
public function SupprimerUtilisateur(array $dVueErreur){
global $rep,$vues;
$users = MdlAdmin::supprimerUtilisateur();
$this->ConsulterUtilisateurs($dVueErreur);
}
}//fin class
?>

@ -0,0 +1,228 @@
<?php
class CtrlUtilisateur {
function __construct() {
global $rep,$vues;
$dVueErreur = array ();
try{
$action=NULL;
if(isset($_REQUEST['action'])){
$action = $_REQUEST["action"];
}
switch($action) {
case NULL:
$this->ConsulterListePrive($dVueErreur);
break;
case "logout":
$this->SeDeconnecter($dVueErreur);
break;
case "redirectionProfil":
$this->redirectionProfil($dVueErreur);
break;
case "supprimerCompte":
$this->supprimerCompte($dVueErreur);
break;
case "modifMdp":
$this->changerMotDePasse($dVueErreur);
break;
case "listePrive":
$this->ConsulterListePrive($dVueErreur);
break;
case "SupprimerTachePrive":
$this->SupprimerTachePrive($dVueErreur);
break;
case "AjouterTachePrive":
$this->AjouterTachePrive($dVueErreur);
break;
case "ModifierListePrive":
$this->ModifierListePrive($dVueErreur);
break;
case "checkPrive":
$this->checkPrive($dVueErreur);
break;
case "AjouterListePrive":
$this->AjouterListePrive($dVueErreur);
break;
case "SupprimerListePrive":
$this->SupprimerListePrive($dVueErreur);
break;
case "pagePrécédentePrive":
$this->listePrécédente($dVueErreur);
break;
case "pageSuivantePrive":
$this->listeSuivante($dVueErreur);
break;
default:
$dVueErreur[] = "Erreur d'appel php";
require ($rep.$vues['erreur']);
break;
}
} catch (PDOException $e)
{
//si erreur BD, pas le cas ici
$dVueErreur[] = "Erreur BD!!! ";
require ($rep.$vues['erreur']);
}
catch (Exception $e2)
{
$dVueErreur[] = "Erreur inattendue!!! ";
require ($rep.$vues['erreur']);
}
//fin
exit(0);
}//fin constructeur
function SeDeconnecter(array $dVueErreur){
global $rep,$vues;
MdlUtilisateur::déconnexion();
$action=NULL;
require ($rep.$vues['login']);
}
function redirectionProfil(array $dVueErreur){
global $rep,$vues;
$action=NULL;
$user=MdlUtilisateur::isConnected();
$nombreListe=MdlUtilisateur::recupererNombreDeListe();
require ($rep.$vues['profil']);
}
function supprimerCompte(array $dVueErreur){
global $rep,$vues;
$action=NULL;
MdlUtilisateur::suppressionUtilisateur();
require ($rep.$vues['login']);
}
function changerMotDePasse(array $dVueErreur){
global $rep,$vues;
try{
MdlUtilisateur::changerMotDePasse();
$action=NULL;
require ($rep.$vues['login']);
}
catch(Exception $e)
{
$dVueErreur[] = $e->getMessage();
require ($rep.$vues['erreur']);
}
}
function ConsulterListePrive(array $dVueErreur) {
global $rep,$vues;
$listesPrive = MdlUtilisateur::RecupererListePrive();
$taches = MdlUtilisateur::RecupererTache();
$action=NULL;
require ($rep.$vues['listPrive']);
}
function SupprimerTachePrive(array $dVueErreur){
global $rep,$vues;
$tache = MdlUtilisateur::SupprimerTache();
$this->ConsulterListePrive($dVueErreur);
}
function SupprimerListePrive(array $dVueErreur){
global $rep,$vues;
$liste = MdlUtilisateur::SupprimerListe();
$this->ConsulterListePrive($dVueErreur);
}
public function AjouterTachePrive(array $dVueErreur){
global $rep,$vues;
try{
$tache = MdlUtilisateur::AjouterTache($dVueErreur);
$this->ConsulterListePrive($dVueErreur);
}
catch (Exception $e)
{
$ErreurLog=$e->getMessage();
$listesPrive= MdlUtilisateur::RecupererListePrive();
$taches = MdlUtilisateur::RecupererTache();
$action=NULL;
require ($rep.$vues['listPrive']);
}
}
public function ModifierListePrive(array $dVueErreur){
global $rep,$vues;
try{
$tache = MdlUtilisateur::ModifierListe($dVueErreur);
$this->ConsulterListePrive($dVueErreur);
}
catch (Exception $e)
{
$ErreurLog=$e->getMessage();
$listesPrive= MdlUtilisateur::RecupererListePrive();
$taches = MdlUtilisateur::RecupererTache();
$action=NULL;
require ($rep.$vues['listPublic']);
}
}
public function checkPrive(array $dVueErreur)
{
global $rep,$vues;
$tache = MdlUtilisateur::check();
$this->ConsulterListePrive($dVueErreur);
}
public function AjouterListePrive(array $dVueErreur){
global $rep,$vues;
try{
$tache = MdlUtilisateur::AjouterListePrive($dVueErreur);
$this->ConsulterListePrive($dVueErreur);
}
catch (Exception $e)
{
$ErreurLog=$e->getMessage();
$listes = MdlUtilisateur::RecupererListePrive();
$taches = MdlUtilisateur::RecupererTache();
$action=NULL;
require ($rep.$vues['listPrive']);
}
}
public function listePrécédente(array $dVueErreur){
if($_SESSION['pageUser'] > 1){
$_SESSION['pageUser']=$_SESSION['pageUser']-1;
}
$this->ConsulterListePrive($dVueErreur);
}
public function listeSuivante(array $dVueErreur){
$_SESSION['pageUser']=$_SESSION['pageUser']+1;
$this->ConsulterListePrive($dVueErreur);
}
}//fin class
?>

@ -0,0 +1,238 @@
<?php
class CtrlVisiteur {
function __construct() {
global $rep,$vues;
$dVueErreur = array ();
try{
$action=NULL;
if(isset($_REQUEST['action'])){
$action = $_REQUEST["action"];
}
switch($action) {
//pas d'action, on réinitialise 1er appel
case NULL:
$this->ConsulterListePublic($dVueErreur);
break;
case "validationFormulaire":
$this->ValidationFormulaire($dVueErreur);
break;
case "seConnecter":
$this->seConnecter($dVueErreur);
break;
case "redirectionListePublic":
$this->ConsulterListePublic($dVueErreur);
break;
case "redirectionLogin":
$this->redirectionLogin($dVueErreur);
break;
case "redirectionInscription":
$this->redirectionInscription($dVueErreur);
break;
case "SupprimerTache":
$this->SupprimerTache($dVueErreur);
break;
case "SupprimerListe":
$this->SupprimerListe($dVueErreur);
break;
case "AjouterTache":
$this->AjouterTache($dVueErreur);
break;
case "AjouterListePublic":
$this->AjouterListePublic($dVueErreur);
break;
case "ModifierListe":
$this->ModifierListe($dVueErreur);
break;
case "pagePrécédente":
$this->listePrécédente($dVueErreur);
break;
case "pageSuivante":
$this->listeSuivante($dVueErreur);
break;
case "check":
$this->check($dVueErreur);
break;
//mauvaise action
default:
$dVueErreur[] = "Erreur d'appel php";
require ($rep.$vues['erreur']);
break;
}
} catch (PDOException $e)
{
//si erreur BD, pas le cas ici
$dVueErreur[] = "Erreur: Connexion a la base de données impossible! ";
require ($rep.$vues['erreur']);
}
catch (Exception $e)
{
$dVueErreur[] = "Erreur venue de nulle part";
require ($rep.$vues['erreur']);
}
//fin
exit(0);
}//fin constructeur
function ValidationFormulaire(array $dVueErreur) {
global $rep,$vues;
try{
$val = MdlVisiteur::CreerUtilisateur($dVueErreur);
$result=MdlUtilisateur::Connection();
$action=NULL;
$this->ConsulterListePublic($dVueErreur);
}
catch (Exception $e)
{
$ErreurLog=$e->getMessage();
require ($rep.$vues['inscription']);
}
catch (PDOException $e)
{
$ErreurLog=$e->getMessage();
require ($rep.$vues['inscription']);
}
}
function redirectionLogin(array $dVueErreur) {
global $rep,$vues;
require ($rep.$vues['login']);
}
function redirectionInscription(array $dVueErreur) {
global $rep,$vues;
require ($rep.$vues['inscription']);
}
function seConnecter(array $dVueErreur) {
global $rep,$vues;
try{
$result=MdlUtilisateur::Connection();
$action=NULL;
$this->ConsulterListePublic($dVueErreur);
}
catch (Exception $e)
{
$ErreurLog=$e->getMessage();
require ($rep.$vues['login']);
}
}
function ConsulterListePublic(array $dVueErreur) {
global $rep,$vues;
$listes = MdlVisiteur::RecupererListePublic();
$taches = MdlVisiteur::RecupererTache();
$action=NULL;
require ($rep.$vues['listPublic']);
}
function SupprimerTache(array $dVueErreur){
$tache = MdlVisiteur::SupprimerTache();
$this->ConsulterListePublic($dVueErreur);
}
function SupprimerListe(array $dVueErreur){
global $rep,$vues;
$liste = MdlVisiteur::SupprimerListe();
$this->ConsulterListePublic($dVueErreur);
}
public function AjouterTache(array $dVueErreur){
global $rep,$vues;
try{
$tache = MdlVisiteur::AjouterTache($dVueErreur);
$this->ConsulterListePublic($dVueErreur);
}
catch (Exception $e)
{
$ErreurLog=$e->getMessage();
$listes = MdlVisiteur::RecupererListePublic();
$taches = MdlVisiteur::RecupererTache();
$action=NULL;
require ($rep.$vues['listPublic']);
}
}
public function AjouterListePublic(array $dVueErreur){
global $rep,$vues;
try{
$tache = MdlVisiteur::AjouterListePublic($dVueErreur);
$this->ConsulterListePublic($dVueErreur);
}
catch (Exception $e)
{
$ErreurLog=$e->getMessage();
$listes = MdlVisiteur::RecupererListePublic();
$taches = MdlVisiteur::RecupererTache();
$action=NULL;
require ($rep.$vues['listPublic']);
}
}
public function ModifierListe(array $dVueErreur){
global $rep,$vues;
try{
$tache = MdlVisiteur::ModifierListe($dVueErreurs);
$this->ConsulterListePublic($dVueErreur);
}
catch (Exception $e)
{
$ErreurLog=$e->getMessage();
$listes = MdlVisiteur::RecupererListePublic();
$taches = MdlVisiteur::RecupererTache();
$action=NULL;
require ($rep.$vues['listPublic']);
}
}
public function check(array $dVueErreur)
{
$tache = MdlVisiteur::check();
$this->ConsulterListePublic($dVueErreur);
}
public function listePrécédente(array $dVueErreur){
if($_SESSION['page'] > 1){
$_SESSION['page']=$_SESSION['page']-1;
}
$this->ConsulterListePublic($dVueErreur);
}
public function listeSuivante(array $dVueErreur){
$_SESSION['page']=$_SESSION['page']+1;
$this->ConsulterListePublic($dVueErreur);
}
}//fin class
?>

@ -0,0 +1,69 @@
<?php
class FrontControleur {
function __construct(){
global $rep,$vues;
session_start();
if(!isset($_SESSION["pageUser"])){
$_SESSION['pageUser']=1;
}
if(!isset($_SESSION["page"])){
$_SESSION['page']=1;
}
try {
$string_actor=' ';
$listeActions=array(
'Utilisateur' => array('logout','redirectionProfil','pageSuivantePrive','pagePrécédentePrive','supprimerCompte','modifMdp' ,'listePrive','AjouterListePrive', 'checkPrive', 'SupprimerListePrive', 'AjouterTachePrive', 'ModifierListePrive', 'SupprimerTachePrive'),
'Admin' => array('redirectionVueUtilisateur','SupprimerUtilisateur')
);
//On récupère l'action
$action=NULL;
if(isset($_REQUEST['action'])){
$action = $_REQUEST["action"];
}
//On vérifie si l'action fait partie des listes d'actions
$string_actor=FrontControleur::quelListe($action,$listeActions);
if($string_actor!=NULL){
$class= 'Mdl'.$string_actor;
$mdl=new $class();
$actor=$mdl->isConnected();
if($actor==NULL){
require($rep.$vues['login']);
}
else{
$ctrl='Ctrl'.$string_actor;
new $ctrl();
}
}
else
new CtrlVisiteur();
} catch (Exception $e) {
$dVueEreur[] = "Erreur inattendue!!! ";
require ($rep.$vues['erreur']);
} catch (PDOException $e)
{
//si erreur BD, pas le cas ici
$dVueErreur[] = "Erreur: Connexion a la base de données impossible! ";
require ($rep.$vues['erreur']);
}
}
public static function quelListe($action,$listeActions){
foreach($listeActions as $a){
if(in_array($action, $a)){
return array_search($a,$listeActions);
}
}
return null;
}
}
?>

@ -7,23 +7,11 @@
//chargement config
require_once(__DIR__.'/config/config.php');
//autolarder du cours
//chargement autoloader pour autochargement des classes
//require_once(__DIR__.'/config/Autoload.php');
//Autoload::charger();
require_once(__DIR__.'/config/Autoload.php');
Autoload::charger();
//autoloader conforme norme PSR-0
require_once(__DIR__.'/config/SplClassLoader.php');
$myLibLoader = new SplClassLoader('Controller', './');
$myLibLoader->register();
$myLibLoader = new SplClassLoader('config', './');
$myLibLoader->register();
$myLibLoader = new SplClassLoader('Modele', './');
$myLibLoader->register();
$cont = new \Controller\Controleur();
$cont = new FrontControleur();
?>

@ -0,0 +1,32 @@
<?php
class MdlAdmin
{
public function __construct(){
}
public function isConnected(){
if(isset($_SESSION['id']) && isset($_SESSION['role']) && $_SESSION['role']=='admin') {
$id=Validation::cleanInt($_SESSION['id']);
$nom=Validation::cleanString($_SESSION['nom']);
$prenom=Validation::cleanString($_SESSION['prenom']);
$pseudo=Validation::cleanPseudo($_SESSION['pseudo']);
$email=Validation::cleanMail($_SESSION['email']);
return new Utilisateur($id,$nom,$prenom,$pseudo,$email);
}
else return null;
}
public function recupererUtilisateur(){
$userGtw = new UtilisateurGateway();
return $userGtw->getUtilisateurs();
}
public function supprimerUtilisateur(){
$userGtw = new UtilisateurGateway();
$userGtw->SupprimerUtilisateur($_GET['idUser']);
}
}

@ -0,0 +1,158 @@
<?php
class MdlUtilisateur
{
public function __construct(){
}
public function connection(){
$gtw=new UtilisateurGateway();
$mail=Validation::cleanMail($_POST['mail']);
$mdp=$_POST['password'];
$verif_pass=$gtw->getCredentials($mail);
if(password_verify($mdp,$verif_pass)){
$userCurrent=$gtw->RechercheUtilisateurViaEmail($mail);
if($gtw->existeAdmin($userCurrent->getId())){
$_SESSION['role']='admin';
}
else{
$_SESSION['role']='user';
}
$_SESSION['id']=$userCurrent->getId();
$_SESSION['nom']=$userCurrent->getNom();
$_SESSION['prenom']=$userCurrent->getPrenom();
$_SESSION['pseudo']=$userCurrent->getPseudo();
$_SESSION['email']=$userCurrent->getMail();
return $userCurrent;
}
else throw new Exception('Mot de passe incorrect*');
}
public function isConnected(){
if(isset($_SESSION['id']) && isset($_SESSION['role'])) {
$id=Validation::cleanInt($_SESSION['id']);
$nom=Validation::cleanString($_SESSION['nom']);
$prenom=Validation::cleanString($_SESSION['prenom']);
$pseudo=Validation::cleanPseudo($_SESSION['pseudo']);
$email=Validation::cleanMail($_SESSION['email']);
return new Utilisateur($id,$nom,$prenom,$pseudo,$email);
}
else return null;
}
public static function déconnexion(){
session_unset();
session_destroy();
$_SESSION = array();
}
public static function recupererNombreDeListe(){
$listeGtw = new ListeGateway();
$id = Validation::cleanInt($_SESSION['id']);
return $listeGtw->CountListe(intval($id));
}
public function ModifierListe(&$dVueErreur){
$userGtw = new ListeGateway();
$id = $_POST['idListe'];
$nom = Validation::cleanText($_POST['nom-modif-liste']);
$description = Validation::cleanText($_POST['description-modif-liste']);
if($nom == NULL && $description==null){
return null;
}
if($description == NULL){
$userGtw->EditerNom($id, $nom);
}
else if($nom == NULL){
$userGtw->EditerDescription($id, $description);
}
else{
$userGtw->Editer($id, $nom, $description);
}
}
public static function suppressionUtilisateur(){
$userGtw = new UtilisateurGateway();
$id=Validation::cleanInt($_SESSION['id']);
$userGtw->SupprimerUtilisateur(intval($id));
MdlUtilisateur::déconnexion();
}
public static function changerMotDePasse(){
$userGtw = new UtilisateurGateway();
$id=Validation::cleanInt($_SESSION['id']);
$mail=Validation::cleanMail($_SESSION['email']);
$mdp=$_POST['passwordCurrent'];
$newMdp=$_POST['newPassword'];
$verif_pass=$userGtw->getCredentials($mail);
if(password_verify($mdp,$verif_pass)){
if($newMdp == $_POST['confirmNewPassword']){
if (!preg_match('/^.{5,}$/', $mdp)) {
throw new Exception("Mot de passe trop faible. Veuillez recommencer !");
}
else {
$userGtw->modifMdp($id, password_hash($newMdp, PASSWORD_DEFAULT));
}
}
else throw new Exception("Erreur lors de la confirmation du mot de passe.");
}
else throw new Exception("Mot de passe Incorrect");
}
public static function AjouterListePrive(&$dVueErreur){
$listGtw = new ListeGateway();
$nom=$_POST['nom-ajout-liste'];
$description=$_POST['description-ajout-liste'];
$idCreateur =Validation::cleanInt($_SESSION['id']);
Validation::val_form_add($nom,$description,$dVueErreur);
$listGtw->Ajouter($nom, $description,0, $idCreateur);
}
public static function RecupererListePrive(){
$listeGtw = new ListeGateway();
if(isset($_SESSION["pageUser"]))
return $listeGtw->getListePrive(($_SESSION["pageUser"]-1)*5,5);
else
return $listeGtw->getListePrive(1,10);
}
public static function RecupererTache(){
$taskGtw = new TacheGateway();
return $taskGtw->getTache();
}
public static function SupprimerListe(){
$listeGtw = new ListeGateway();
$taskGtw = new TacheGateway();
$id = $_GET['idListe'];
$taskGtw->SupprimerViaListe($id);
$listeGtw->Supprimer($id);
}
public static function check(){
$taskGtw = new TacheGateway();
$id = $_POST['idTache'];
$taskGtw->isDone($id);
}
public static function SupprimerTache(){
$taskGtw = new TacheGateway();
$id = $_GET['idTache'];
$taskGtw->Supprimer($id);
}
public function AjouterTache(&$dVueErreur){
$taskGtw = new TacheGateway();
$id = $_POST['idListe'];
$nom = $_POST['nom-ajout'];
$description = $_POST['description-ajout'];
Validation::val_form_add($nom,$description,$dVueErreur);
$taskGtw->AjouterTache($nom, $description,false,$id);
}
}

@ -0,0 +1,90 @@
<?php
class MdlVisiteur
{
public function __construct(){
}
public static function CreerUtilisateur(&$dVueErreur){
$userGtw = new UtilisateurGateway();
Validation::val_form_user($_POST["nom-Form"],$_POST["prenom-Form"],$_POST["pseudo-Form"],$_POST["password"],$_POST["mail"],$dVueErreur);
$userGtw->isExisteViaMail($_POST["mail"]);
$userGtw->isExisteViaPseudo($_POST["pseudo-Form"]);
$hash = password_hash($_POST["password"], PASSWORD_DEFAULT);
$userGtw->AjouterUtilisateur($_POST["nom-Form"],$_POST["prenom-Form"],$_POST["pseudo-Form"],$_POST["mail"],$hash);
}
public static function RecupererListePublic(){
$listGtw = new ListeGateway();
if(isset($_SESSION["page"]))
return $listGtw->getListePublic(($_SESSION["page"]-1)*5,5);
else
return $listGtw->getListePublic(1,10);
}
public static function RecupererTache(){
$taskGtw = new TacheGateway();
return $taskGtw->getTache();
}
public static function SupprimerTache(){
$taskGtw = new TacheGateway();
$id = $_GET['idTache'];
$taskGtw->Supprimer($id);
}
public static function SupprimerListe(){
$listGtw = new ListeGateway();
$taskGtw = new TacheGateway();
$id = $_GET['idListe'];
$taskGtw->SupprimerViaListe($id);
$listGtw->Supprimer($id);
}
public function AjouterTache(&$dVueErreur){
$taskGtw = new TacheGateway();
$id = $_POST['idListe'];
$nom = $_POST['nom-ajout'];
$description = $_POST['description-ajout'];
Validation::val_form_add($nom,$description,$dVueErreur);
$taskGtw->AjouterTache($nom, $description,false,$id);
}
public function ModifierListe(&$dVueErreur){
$listGtw = new ListeGateway();
$id = $_POST['idListe'];
$nom = Validation::cleanText($_POST['nom-modif-liste']);
$description = Validation::cleanText($_POST['description-modif-liste']);
if($nom == NULL && $description==null){
return null;
}
if($description == NULL){
$listGtw->EditerNom($id, $nom);
}
else if($nom == NULL){
$listGtw->EditerDescription($id, $description);
}
else{
$listGtw->Editer($id, $nom, $description);
}
}
public function AjouterListePublic(&$dVueErreur){
$listGtw = new ListeGateway();
$nom=$_POST['nom-ajout-liste'];
$description=$_POST['description-ajout-liste'];
Validation::val_form_add($nom,$description,$dVueErreur);
$listGtw->Ajouter($nom, $description,1, 1);
}
public static function check(){
$taskGtw = new TacheGateway();
$id = Validation::cleanInt($_POST['idTache']);
$taskGtw->isDone($id);
}
}

@ -0,0 +1,69 @@
<?php
class ListeGateway{
private $con;
public function __construct(){
global $dsn,$user,$pass;
$this->con=new Connection($dsn,$user,$pass);
}
public function Ajouter(string $nom, string $description, bool $estPublic, string $createur){
$query='INSERT INTO ToDoList_Liste(nom, description, dateCreation,estPublic, idUtilisateur) VALUES(:nom,:description,CURRENT_DATE, :estPublic, :createur);';
$this->con->executeQuery($query, array(
'nom' => array($nom, PDO::PARAM_STR),
'description' => array($description, PDO::PARAM_STR),
'estPublic' => array($estPublic, PDO::PARAM_INT),
'createur' => array($createur, PDO::PARAM_STR),
));
}
public function Editer(string $id, string $nom, string $description){
$query='UPDATE ToDoList_Liste SET nom=:nom, description=:description WHERE id=:id;';
$this->con->executeQuery($query, array(
'nom' => array($nom, PDO::PARAM_STR),
'id' => array($id,PDO::PARAM_INT),
'description' => array($description, PDO::PARAM_STR))
);
}
public function CountListe($id){
$query="SELECT count(*) as nombreListe FROM ToDoList_Liste WHERE idUtilisateur=:id";
$this->con->executeQuery($query, array('id' => array($id, PDO::PARAM_INT)));
return $this->con->getResults()[0]['nombreListe'];
}
public function EditerNom(string $id, string $nom){
$query='UPDATE ToDoList_Liste SET nom=:nom WHERE id=:id;';
$this->con->executeQuery($query, array('nom' => array($nom, PDO::PARAM_STR),'id' => array($id, PDO::PARAM_INT)));
}
public function EditerDescription(string $id, string $description){
$query='UPDATE ToDoList_Liste SET description=:description WHERE id=:id;';
$this->con->executeQuery($query, array('description' => array($description, PDO::PARAM_STR), 'id' => array($id, PDO::PARAM_INT)));
}
public function Supprimer(string $id){
$query="DELETE FROM ToDoList_Liste WHERE id=:id";
$this->con->executeQuery($query,array('id' => array($id, PDO::PARAM_INT)));
}
public function getListePublic($offset,$limit){
$query = "SELECT * FROM ToDoList_Liste WHERE estPublic LIMIT $offset, $limit";
$this->con->executeQuery($query);
$listes = [];
foreach ($this->con->getResults() as $liste) {
$listes[] = new Liste($liste["id"],$liste["nom"],$liste["description"],$liste["dateCreation"],$liste["estPublic"],$liste["idUtilisateur"]);
}
return $listes;
}
public function getListePrive($offset,$limit){
$query = "SELECT * FROM ToDoList_Liste WHERE !estPublic LIMIT $offset, $limit";
$this->con->executeQuery($query);
$listes = [];
foreach ($this->con->getResults() as $liste) {
$listes[] = new Liste($liste["id"],$liste["nom"],$liste["description"],$liste["dateCreation"],$liste["estPublic"],$liste["idUtilisateur"]);
}
return $listes;
}
}
?>

@ -0,0 +1,60 @@
<?php
class TacheGateway{
private $con;
public function __construct(){
global $dsn,$user,$pass;
$this->con=new Connection($dsn,$user,$pass);
}
public function AjouterTache(string $nom, string $description, bool $estValide, string $idListe){
$query='INSERT INTO ToDoList_Tache(nom, description, dateCreation,estValide, idListe) VALUES(:nom, :description, CURRENT_DATE, :estValide, :idListe);';
$this->con->executeQuery($query, array(
'nom' => array($nom, PDO::PARAM_STR),
'description' => array($description, PDO::PARAM_STR),
'estValide' => array($estValide, PDO::PARAM_BOOL),
'idListe' => array($idListe, PDO::PARAM_INT)));
}
public function Editer(string $id, string $nom, string $description){
$query='UPDATE ToDoList_Tache SET nom=:nom, description =:description WHERE id=:id;';
$this->con->executeQuery($query, array('nom' => array($nom, PDO::PARAM_STR), 'description' => array($description, PDO::PARAM_STR), 'id' => array($id, PDO::PARAM_INT)));
}
public function EditerNom(string $id, string $nom){
$query='UPDATE ToDoList_Tache SET nom=:nom WHERE id=:id;';
$this->con->executeQuery($query, array('nom' => array($nom, PDO::PARAM_STR), 'id' => array($id, PDO::PARAM_INT)));
}
public function EditerDescription(string $id, string $description){
$query='UPDATE ToDoList_Tache SET description=:description WHERE id=:id;';
$this->con->executeQuery($query, array('description' => array($description, PDO::PARAM_STR), 'id' => array($id, PDO::PARAM_INT)));
}
public function Supprimer(string $id){
$query='DELETE FROM ToDoList_Tache WHERE id=:id;';
$this->con->executeQuery($query,array('id' => array($id, PDO::PARAM_INT)));
}
// Si une liste est supprimée on supprime toutes ces tâches grâce à cette fonction
public function SupprimerViaListe(string $id){
$query='DELETE FROM ToDoList_Tache WHERE idListe=:id;';
$this->con->executeQuery($query,array('id' => array($id, PDO::PARAM_INT)));
}
public function getTache(){
$query='SELECT * FROM ToDoList_Tache;';
$this->con->executeQuery($query);
$taches = [];
foreach ($this->con->getResults() as $tache) {
$taches[] = new Tache($tache["id"],$tache["nom"],$tache["description"],$tache["dateCreation"],$tache["estValide"],$tache["idListe"]);
}
return $taches;
}
public function isDone(string $id){
$query = 'UPDATE ToDoList_Tache SET estValide = !estValide WHERE id=:id;';
$this->con->executeQuery($query, array('id' => array($id, PDO::PARAM_STR)));
}
}
?>

@ -0,0 +1,102 @@
<?php
class UtilisateurGateway{
private $con;
public function __construct(){
global $dsn,$user,$pass;
$this->con=new Connection($dsn,$user,$pass);
}
public function AjouterUtilisateur(string $nom,string $prenom, string $pseudo, string $email, string $mdp){
$query="INSERT INTO ToDoList_Utilisateur(nom,prenom,pseudo,email,motDePasse) values (:nom,:prenom,:pseudo,:email,:mdp)";
$this->con->executeQuery($query, array(
'nom' => array($nom, PDO::PARAM_STR),
'prenom' => array($prenom, PDO::PARAM_STR),
'pseudo' => array($pseudo, PDO::PARAM_STR),
'email' => array($email, PDO::PARAM_STR),
'mdp' => array($mdp, PDO::PARAM_STR)));
}
public function SupprimerUtilisateur(int $id){
$query="DELETE FROM ToDoList_Utilisateur WHERE id=:id";
$this->con->executeQuery($query, array(
'id' => array($id, PDO::PARAM_INT)));
}
public function existeAdmin(int $id){
$query="SELECT * FROM ToDoList_Admin WHERE idAdmin=:id";
$this->con->executeQuery($query, array(
'id' => array($id, PDO::PARAM_INT)));
$results=$this->con->getResults();
if($results!=null){
return true;
}else{
return false;
}
}
public function getUtilisateurs(){
$query = "SELECT * FROM ToDoList_Utilisateur";
$this->con->executeQuery($query);
$listesUsers = [];
foreach ($this->con->getResults() as $user) {
$listesUsers[] = new Utilisateur($user["id"],$user["nom"],$user["prenom"],$user["pseudo"],$user["email"]);
}
return $listesUsers;
}
// Vérifie que le mail n'existe pas
public function isExisteViaMail($mail){
$query="SELECT * FROM ToDoList_Utilisateur WHERE email=:mail";
$this->con->executeQuery($query, array('mail' => array($mail, PDO::PARAM_STR)));
$results=$this->con->getResults();
if($results!=null){
throw new PDOException("Erreur l'email existe déjà*");
}else{
return null;
}
}
// Vérifie que le pseudo n'existe pas
public function isExisteViaPseudo($pseudo){
$query="SELECT * FROM ToDoList_Utilisateur WHERE pseudo=:pseudo";
$this->con->executeQuery($query, array('pseudo' => array($pseudo, PDO::PARAM_STR)));
$results=$this->con->getResults();
if($results!=null){
throw new PDOException("Erreur le pseudo existe déjà*");
}else{
return null;
}
}
// Récupère le mot de passe pour la connexion via le mail en paramètres
public function getCredentials(string $mail){
$query = 'SELECT motDePasse FROM ToDoList_Utilisateur WHERE email=:mail';
$this->con->executeQuery($query, array('mail' => array($mail, PDO::PARAM_STR)));
$results=$this->con->getResults();
if($results!=null){
return $results[0]['motDePasse'];
}else{
throw new Exception("Identifiant introuvable*");
}
}
public function modifMdp($id, $mdp){
$query = "UPDATE ToDoList_Utilisateur SET motDePasse=:mdp WHERE id=:id";
$this->con->executeQuery($query, array(
'mdp' => array($mdp, PDO::PARAM_STR),
'id' => array($id, PDO::PARAM_INT)));
}
public function RechercheUtilisateurViaEmail(string $mail){
$query = 'SELECT * FROM ToDoList_Utilisateur WHERE email=:mail';
$this->con->executeQuery($query, array('mail' => array($mail, PDO::PARAM_STR)));
$results=$this->con->getResults();
if($results!=null){
return new Utilisateur($results[0]['id'],$results[0]['nom'],$results[0]['prenom'],$results[0]['pseudo'],$results[0]['email']);
}else{
throw new Exception("Identifiant introuvable*");
}
}
}
?>

@ -0,0 +1,70 @@
<?php
class Liste
{
private $id;
private $nom;
private $description;
private $dateCreation;
private $estPublic;
private $idUtilisateur;
public function __construct($id, $nom, $description, $dateCreation, $estPublic, $idUtilisateur){
$this->id = $id;
$this->nom = $nom;
$this->description = $description;
$this->dateCreation = $dateCreation;
$this->estPublic = $estPublic;
$this->idUtilisateur = $idUtilisateur;
}
//Id
public function getId(){
return $this->id;
}
public function setId($id){
$this->id=$id;
}
//Nom
public function getNom(){
return $this->nom;
}
public function getDescription(){
return $this->description;
}
public function setNom($nom){
$this->nom=$nom;
}
//DateCreation
public function getDateCreation(){
return $this->dateCreation;
}
public function setDateCreation($dateCreation){
$this->dateCreation = $dateCreation;
}
//EstPublic
public function getEstPublic(){
return $this->estPublic;
}
public function setEstPublic($estPublic){
$this->estPublic = $estPublic;
}
//idUtilisateur
public function getIdUtilisateur(){
return $this->idUtilisateur;
}
public function setIdUtilisateur($idUtilisateur){
$this->idUtilisateur = $idUtilisateur;
}
}

@ -0,0 +1,75 @@
<?php
class Tache
{
private $id;
private $nom;
private $description;
private $dateCreation;
private $estValide;
private $idListe;
public function __construct($id, $nom, $description,$dateCreation, $estValide,$idListe){
$this->id = $id;
$this->nom = $nom;
$this->description = $description;
$this->dateCreation = $dateCreation;
$this->estValide = $estValide;
$this->idListe = $idListe;
}
//Id
public function getid(){
return $this->id;
}
public function setId($id){
$this->id=$id;
}
//Nom
public function getNom(){
return $this->nom;
}
public function setNom($nom){
$this->nom=$nom;
}
//Description
public function getDescription(){
return $this->description;
}
public function setDescription($description){
$this->description=$description;
}
//DateCreation
public function getDateCreation(){
return $this->dateCreation;
}
public function setDateCreation($dateCreation){
$this->dateCreation = $dateCreation;
}
//EstValide
public function getEstValide(){
return $this->estValide;
}
public function setEstValide($estValide){
$this->estValide = $estValide;
}
//idList
public function getIdListe(){
return $this->idListe;
}
public function setIdListe($idListe){
$this->idListe = $idListe;
}
}

@ -0,0 +1,65 @@
<?php
class Utilisateur
{
private $id;
private $nom;
private $prenom;
private $pseudo;
private $email;
public function __construct($id, $nom, $prenom, $pseudo, $email){
$this->id = $id;
$this->nom = $nom;
$this->prenom = $prenom;
$this->pseudo = $pseudo;
$this->email = $email;
}
//Nom
public function getId(){
return $this->id;
}
public function setId($id){
$this->nom = $id;
}
//Nom
public function getNom(){
return $this->nom;
}
public function setNom($nom){
$this->nom = $nom;
}
//Prenom
public function getPrenom(){
return $this->prenom;
}
public function setPrenom($prenom){
$this->prenom = $prenom;
}
//Pseudo
public function getPseudo(){
return $this->pseudo;
}
public function setPseudo($pseudo){
$this->pseudo = $pseudo;
}
//mail
public function getMail(){
return $this->email;
}
public function setEmail($email){
$this->email = $email;
}
}
?>

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Before

Width:  |  Height:  |  Size: 1.4 MiB

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

@ -1,4 +1,4 @@
@import url("reset.css");
@import url("./Vue/css/reset.css");
@import url('https://fonts.googleapis.com/css2?family-Poppins:wght@400;600&display-swap');
@ -12,6 +12,9 @@ body {
font-weight: bold;
align-items: center;
justify-content: center;
-webkit-user-select: none; /* Safari */
-ms-user-select: none; /* IE 10 and IE 11 */
user-select: none;
}
body::before {
@ -23,69 +26,6 @@ body::before {
z-index: -1;
}
/*Bouton*/
.btn{
display: flex;
flex-direction: column;
margin-left: 19rem;
margin-top: -25rem;
}
.btn:link,
.btn:visited {
text-decoration: none;
padding: 5px 10px;
display: inline-block;
border-radius: 11px;
font-size: 70%;
transition: all .2s;
position: absolute;
}
.btn:hover {
transform: translateY(-3px);
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
}
.btn:active {
transform: translateY(-1px);
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
}
.btn-white {
background-color: #fff;
color: #777;
}
.btn::after {
content: "";
display: inline-block;
height: 100%;
width: 100%;
border-radius: 50px;
position: absolute;
top: 0;
left: 0;
z-index: -1;
transition: all .4s;
}
.btn-white::after {
background-color: #fff;
}
.btn:hover::after {
transform: scaleX(1.5) scaleY(1.7);
opacity: 0;
}
.btn-animated {
animation: moveInBottom 5s ease-out;
animation-fill-mode: backwards;
}
/* Model */
.model {
@ -273,16 +213,6 @@ body::before {
accent-color: black;
}
.model button {
background: #38b6ff;
color: white;
padding: 1rem;
border-radius: 100px;
text-transform: uppercase;
letter-spacing: 2px;
transition: background .5s;
}
.login-card-form button:hover {
background-color: rgba(84,192,255,.85);
cursor: pointer;
@ -329,6 +259,57 @@ body::before {
transform: scale(1.1);
}
/* Button */
.mon-button{
font-family: 'Poppins', sans-serif;
font-weight: bold;
border-color: transparent;
background-color: transparent;
color: #35339a;
}
.mon-button:hover{
text-decoration: underline 1px;
}
.button-body{
background: #38b6ff;
color: white;
padding: 1rem;
border-radius: 100px;
text-transform: uppercase;
letter-spacing: 2px;
transition: background .5s;
}
.ErreurText{
color: red;
font-size: 0.7rem;
font-weight: bold;
}
.button{
border-color: #38b6ff;
height: 2rem;
width: 5rem;
margin-left: 1rem;
margin-bottom: 1rem;
font-size: 90%;
align-items: center;
border-radius: 12px;
background-color: #38b6ff;
color: white;
display: flex;
justify-content: center;
}
.button:hover {
background-color: #6fc7fa;
}
/* Responsive */
@media (max-width: 768px) {

@ -0,0 +1,3 @@
input[type="checkbox"]:checked + label {
text-decoration: line-through;
}

@ -0,0 +1,63 @@
<div class="header">
<div class="menu-bar" >
<section class="fixed-top">
<nav class="navbar navbar-expand-lg bg-info ">
<img src="./vue/Images/LogoForHome.png" width="200">
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
<i class="fa fa-bars"></i>
</button>
<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
<style>
.fa {
color: white;
font-size: 26px;
}
.nav-link:hover {
border-bottom: 1px solid #fff;
}
</style>
<div class="custom-control custon-switch mr-5">
<input type="checkbox" class="custom-control-input" id="selector">
<label class="custom-control-label" for="selector">Dark Mode</label>
</input>
</div>
<ul class="navbar-nav ml-auto">
<?php
if(isset($_SESSION['id'])){ ?>
<h5><a class="nav-item nav-link text-light" href="VueListePublic">Listes Publiques</a></h5>
<h5><a class="nav-item nav-link text-light" href="listePrive">Mes listes</a></h5>
<h5><a class="nav-item nav-link text-light" href="MonProfil">Mon Profil</a></h5>
<?php if($_SESSION['role']=='admin'){?>
<h5><a class="nav-item nav-link text-warning" href="users">Les utilisateurs</a></h5>
<?php } ?>
<h5><button class="nav-item btn btn-outline-light" onclick="myFunction()">Se déconnecter</button></h5>
<script>
function myFunction() {
let text = "Voulez-vous vraiment vous déconnecter?!\n";
if (confirm(text) == true) {
location.replace("logout")
} else {
}
}
</script>
<?php
} else {
?> <h5><a class="nav-item btn btn-outline-light" href="login">Se connecter</a></h5>
<h5><a class="nav-item nav-link text-light" href="inscription">S'inscrire</a></h5>
<?php
}
?>
</ul>
</div>
</nav>
</section>
</div>
</div>

@ -0,0 +1,356 @@
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="shortcut icon" href="./vue/Images/gif.gif" type="../Images/gif">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Home Page</title>
<!-- CSS only -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<link rel="stylesheet" href="https:/stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="./vue/css/task.css">
<!-- JavaScript Bundle with Popper -->
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
</head>
<body style="-webkit-user-select: none; /* Safari */
-ms-user-select: none; /* IE 10 and IE 11 */
user-select: none;">
<?php require($rep.$vues['NavBar']); ?>
<br>
<br>
<br>
<button class="btn btn-default" data-toggle="modal" data-target="#formulaireAjoutListe">
Ajouter une liste
<img src="./vue/Images/plus.png" width="20" />
</button>
<div class="container">
<div class="modal fade" id="formulaireAjoutListe">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Ajout d'une liste</h4>
<button type="button" class="close" data-dismiss="modal">
<span>&times;</span>
</button>
</div>
<div class="modal-body row">
<form class="col" method="POST">
<div class="form-group">
<?php
if(isset($dVueErreur['nom'])){?>
<center><p class="text-danger"> <?php echo $dVueErreur['nom']?></p></center><?php
}
?>
<label for="nom" class="form-control-label">Nom</label>
<input type="text" class="form-control" name ="nom-ajout-liste" id="nom" placeholder="Entrez un nom">
</div>
<div class="form-group">
<?php
if(isset($dVueErreur['description'])){?>
<center><p class="text-danger"> <?php echo $dVueErreur['description']?></p></center><?php
}
?>
<label for="description" class="form-control-label">Description</label>
<input type="text" class="form-control" name="description-ajout-liste" id="description" placeholder="Entrez une description">
</div>
<button type="submit" class="btn btn-primary pull-right">Ajouter</button>
<input type="hidden" name="action" value="AjouterListePrive">
</form>
</div>
</div>
</div>
</div>
</div>
<?php
foreach($listesPrive as $liste){
if($liste->getIdUtilisateur() == $_SESSION['id']){
$done = 0;
$total = 0;
?>
<!-- Modifier couleur -->
<script>
$(document).ready(function(){
$("#selector").change(function(){
$("body").toggleClass("bg-secondary");
$("nav").toggleClass("navbar-dark bg-dark");
$(".custom-control-label").toggleClass("text-white");
});
});
</script>
<!-- Affichage des listesPrive -->
<div class="container py-2 h-100">
<div class="row d-flex justify-content-center align-items-center h-100">
<div class="col col-lg-8 col-xl-6">
<div class="card rounded-3">
<div class="card-body p-4">
<div>
<p class="mb-2">
<span class="h2 me-2 text-info"><?= $liste->getNom()?>
<a href="index.php?action=SupprimerListePrive&idListe=<?= $liste->getId() ?>">
<button class="btn btn-default">
<img src="./vue/Images/trash.png" width="20" />
</button>
</a>
<button data-toggle="modal" data-target="#formulaireModif<?= $liste->getId()?>" class="btn btn-default">
<img src="./vue/Images/edit.png" width="20" />
</button>
<button data-toggle="modal" data-target="#formulaireAjout<?= $liste->getId()?>" class="btn btn-default">
<img src="./vue/Images/plus.png" width="20" />
</button>
</span>
</p>
<p><span class="h5 me-2"><?= $liste->getDescription()?></span>
<p class="text-muted pb-2"><?= $liste->getDateCreation()?> by <strong><?= $_SESSION['pseudo'] ?></strong> </p>
</div>
<!-- Fenetre modal -->
<div class="container">
<div class="modal fade" id="formulaireAjout<?= $liste->getId()?>">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Ajout d'une tache</h4>
<button type="button" class="close" data-dismiss="modal">
<span>&times;</span>
</button>
</div>
<div class="modal-body row">
<form class="col" method="POST">
<div class="form-group">
<?php
if(isset($dVueErreur['nom'])){?>
<center><p class="text-danger"> <?php echo $dVueErreur['nom']?></p></center><?php
}
?>
<label for="nom" class="form-control-label">Nom</label>
<input type="text" class="form-control" name ="nom-ajout" id="nom" placeholder="Entrez un nom">
</div>
<div class="form-group">
<?php
if(isset($dVueErreur['description'])){?>
<center><p class="text-danger"> <?php echo $dVueErreur['description']?></p></center><?php
}
?>
<label for="description" class="form-control-label">Description</label>
<input type="text" class="form-control" name="description-ajout" id="description" placeholder="Entrez une description">
</div>
<button type="submit" class="btn btn-primary pull-right">Ajouter</button>
<input type="hidden" name="action" value="AjouterTachePrive">
<input type="hidden" name="idListe" value="<?= $liste->getId() ?>">
</form>
</div>
</div>
</div>
</div>
</div>
<div class="container">
<div class="modal fade" id="formulaireModif<?= $liste->getId()?>">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Modification</h4>
<button type="button" class="close" data-dismiss="modal">
<span>&times;</span>
</button>
</div>
<div class="modal-body row">
<form class="col" method="POST">
<div class="form-group">
<?php
if(isset($dVueErreur['nom'])){?>
<center><p class="text-danger"> <?php echo $dVueErreur['nom']?></p></center><?php
}
?>
<label for="nom" class="form-control-label">Nouveau nom</label>
<input type="text" class="form-control" name ="nom-modif-liste" id="nom" placeholder="<?= $liste->getNom() ?>">
</div>
<div class="form-group">
<?php
if(isset($dVueErreur['description'])){?>
<center><p class="text-danger"> <?php echo $dVueErreur['description']?></p></center><?php
}
?>
<label for="description" class="form-control-label">Nouvelle description</label>
<input type="text" class="form-control" name="description-modif-liste" id="description" placeholder="<?= $liste->getDescription() ?>">
</div>
<button type="submit" class="btn btn-primary pull-right">Modifier</button>
<input type="hidden" name="action" value="ModifierListePrive">
<input type="hidden" name="idListe" value="<?= $liste->getId() ?>">
</form>
</div>
</div>
</div>
</div>
</div>
<!-- Tache -->
<ul class="list-group rounded-0">
<?php
foreach($taches as $tache){
if($tache->getIdListe() == $liste->getId()){
if($tache->getEstValide() == 1){
$done = $done + 1;
}
$total = $total + 1;
?>
<li class="list-group-item border-0 d-flex align-items-center ps-0">
<form name="action" action="checkPrive" method="POST">
<input class="form-check-input me-3" id="task-<?= $tache->getId() ?>" type="checkbox" onChange="submit();"
<?php if($tache->getEstValide() == 1) echo "checked" ?>>
<label for="task-<?= $tache->getId() ?>"> <?= $tache->getNom() ?> : <?= $tache->getDescription() ?></label>
<input type="hidden" name="idTache" value="<?= $tache->getId() ?>" >
</form>
<a href="index.php?action=SupprimerTachePrive&idTache=<?= $tache->getId() ?>">
<button class="btn btn-default">
<img src="./vue/Images/trash.png" width="20" />
</button>
</a>
</li>
<?php
}
}
?>
</ul>
</div>
<div class="progress">
<?php
if($total != 0){
$pourcentage = $done * 100 / $total;
} else{
$pourcentage = 0;
}
?>
<div class="progress-bar progress-bar-striped" role="progressbar" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100" style="width: <?php echo"$pourcentage" ?>%;"></div>
</div>
</div>
</div>
</div>
</div>
<?php
}
}
?>
<nav aria-label="Page navigation example">
<center>
<p>Page n°<?php echo $_SESSION['pageUser'] ?></p>
</center>
<ul class="pagination justify-content-center">
<li class="page-item">
<a class="page-link" href="previousPagePrive">Previous</a>
</li>
<li class="page-item">
<a class="page-link" href="nextPagePrive">Next</a>
</li>
</ul>
</nav>
</body>
<!-- Footer -->
<footer class="text-center text-lg-start bg-light sticky-bottom">
<br>
<!-- Section: Links -->
<section class="">
<div class="container text-center text-md-start mt-5">
<!-- Grid row -->
<div class="row mt-3">
<!-- Grid column -->
<div class="col-md-3 col-lg-4 col-xl-3 mx-auto mb-4">
<!-- Content -->
<h6 class="text-uppercase fw-bold mb-4">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-wallet2" viewBox="0 0 16 16">
<path d="M12.136.326A1.5 1.5 0 0 1 14 1.78V3h.5A1.5 1.5 0 0 1 16 4.5v9a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 13.5v-9a1.5 1.5 0 0 1 1.432-1.499L12.136.326zM5.562 3H13V1.78a.5.5 0 0 0-.621-.484L5.562 3zM1.5 4a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 .5-.5v-9a.5.5 0 0 0-.5-.5h-13z"/>
</svg> Project
</h6>
<p>
2nd year project, consisting of making a To do List in php
, which contains visitors or users, who can add,
delete, see tasks...
</p>
</div>
<!-- Grid column -->
<!-- Grid column -->
<div class="col-md-2 col-lg-2 col-xl-2 mx-auto mb-4">
<!-- Links -->
<h6 class="text-uppercase fw-bold mb-4">
Products
</h6>
<p>
<img src="https://img.shields.io/badge/HTML-000?style=for-the-badge&logo=html5&logoColor=orange&color=f8f9fa">
</img>
</p>
<p>
<img src="https://img.shields.io/badge/CSS-000?style=for-the-badge&logo=Css3&logoColor=blue&color=f8f9fa">
</img>
</p>
<p>
<img src="https://img.shields.io/badge/PHP-000?style=for-the-badge&logo=php&logoColor=purple&color=f8f9fa">
</img>
</p>
<p>
<img src="https://img.shields.io/badge/JavaScript-000?style=for-the-badge&logo=javascript&logoColor=yellow&color=f8f9fa">
</img>
</p>
</div>
<!-- Grid column -->
<!-- Grid column -->
<div class="col-md-4 col-lg-3 col-xl-3 mx-auto mb-md-0 mb-4">
<!-- Links -->
<h6 class="text-uppercase fw-bold mb-4">Contact</h6>
<p>
<svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" fill="currentColor" class="bi bi-envelope" viewBox="0 0 16 16">
<path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4Zm2-1a1 1 0 0 0-1 1v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2Zm13 2.383-4.708 2.825L15 11.105V5.383Zm-.034 6.876-5.64-3.471L8 9.583l-1.326-.795-5.64 3.47A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.741ZM1 11.105l4.708-2.897L1 5.383v5.722Z"/>
</svg>
emre.kartal@etu.uca.fr
</p>
<p>
<svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" fill="currentColor" class="bi bi-envelope" viewBox="0 0 16 16">
<path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4Zm2-1a1 1 0 0 0-1 1v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2Zm13 2.383-4.708 2.825L15 11.105V5.383Zm-.034 6.876-5.64-3.471L8 9.583l-1.326-.795-5.64 3.47A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.741ZM1 11.105l4.708-2.897L1 5.383v5.722Z"/>
</svg>
rayhan.hassou@etu.uca.fr
</p>
<p><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pin" viewBox="0 0 16 16">
<path d="M4.146.146A.5.5 0 0 1 4.5 0h7a.5.5 0 0 1 .5.5c0 .68-.342 1.174-.646 1.479-.126.125-.25.224-.354.298v4.431l.078.048c.203.127.476.314.751.555C12.36 7.775 13 8.527 13 9.5a.5.5 0 0 1-.5.5h-4v4.5c0 .276-.224 1.5-.5 1.5s-.5-1.224-.5-1.5V10h-4a.5.5 0 0 1-.5-.5c0-.973.64-1.725 1.17-2.189A5.921 5.921 0 0 1 5 6.708V2.277a2.77 2.77 0 0 1-.354-.298C4.342 1.674 4 1.179 4 .5a.5.5 0 0 1 .146-.354zm1.58 1.408-.002-.001.002.001zm-.002-.001.002.001A.5.5 0 0 1 6 2v5a.5.5 0 0 1-.276.447h-.002l-.012.007-.054.03a4.922 4.922 0 0 0-.827.58c-.318.278-.585.596-.725.936h7.792c-.14-.34-.407-.658-.725-.936a4.915 4.915 0 0 0-.881-.61l-.012-.006h-.002A.5.5 0 0 1 10 7V2a.5.5 0 0 1 .295-.458 1.775 1.775 0 0 0 .351-.271c.08-.08.155-.17.214-.271H5.14c.06.1.133.191.214.271a1.78 1.78 0 0 0 .37.282z"/>
</svg> Groupe 4</p>
</div>
<!-- Grid column -->
</div>
<!-- Grid row -->
</div>
</section>
<!-- Section: Links -->
<!-- Copyright -->
<div class="text-center p-4" style="background-color: rgba(0, 0, 0, 0.05);">
© 2021 Copyright:
<a class="text-reset fw-bold" href="#">ToDoList.com</a>
</div>
<!-- Copyright -->
</footer>
</html>

@ -0,0 +1,340 @@
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="shortcut icon" href="./vue/Images/gif.gif" type="../Images/gif">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Home Page</title>
<!-- CSS only -->
<link rel="stylesheet" href="./vue/css/task.css">
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css">
<!-- jQuery library -->
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.1/dist/jquery.slim.min.js"></script>
<!-- Popper JS -->
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
<!-- Latest compiled JavaScript -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body style="-webkit-user-select: none; /* Safari */
-ms-user-select: none; /* IE 10 and IE 11 */
user-select: none;">
<?php require($rep.$vues['NavBar']); ?>
<br>
<br>
<br>
<button class="btn btn-default" data-toggle="modal" data-target="#formulaireAjoutListe">
Ajouter une liste
<img src="./vue/Images/plus.png" width="20" />
</button>
<div class="container">
<div class="modal fade" id="formulaireAjoutListe">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Ajout d'une liste</h4>
<button type="button" class="close" data-dismiss="modal">
<span>&times;</span>
</button>
</div>
<div class="modal-body row">
<form class="col" method="POST">
<div class="form-group">
<?php
if(isset($dVueErreur['nom'])){?>
<center><p class="text-danger"> <?php echo $dVueErreur['nom']?></p></center><?php
}
?>
<label for="nom" class="form-control-label">Nom</label>
<input type="text" class="form-control" name ="nom-ajout-liste" id="nom" placeholder="Entrez un nom">
</div>
<div class="form-group">
<?php
if(isset($dVueErreur['description'])){?>
<center><p class="text-danger"> <?php echo $dVueErreur['description']?></p></center><?php
}
?>
<label for="description" class="form-control-label">Description</label>
<input type="text" class="form-control" name="description-ajout-liste" id="description" placeholder="Entrez une description">
</div>
<button type="submit" class="btn btn-primary pull-right">Ajouter</button>
<input type="hidden" name="action" value="AjouterListePublic">
</form>
</div>
</div>
</div>
</div>
</div>
<?php
foreach($listes as $liste){
$done = 0;
$total = 0;
?>
<!-- Modifier couleur -->
<script>
$(document).ready(function(){
$("#selector").change(function(){
$("body").toggleClass("bg-secondary");
$("nav").toggleClass("navbar-dark bg-dark");
$(".custom-control-label").toggleClass("text-white");
});
});
</script>
<!-- Affichage des listes -->
<div class="container py-2 h-100">
<div class="row d-flex justify-content-center align-items-center h-100">
<div class="col col-lg-8 col-xl-6">
<div class="card rounded-3">
<div class="card-body p-4">
<div>
<p class="mb-2">
<span class="h2 me-2 text-info"><?= $liste->getNom()?>
<a href="index.php?action=SupprimerListe&idListe=<?= $liste->getId() ?>">
<button class="btn btn-default">
<img src="./vue/Images/trash.png" width="20" />
</button>
</a>
<button data-toggle="modal" data-target="#formulaireModif<?= $liste->getId()?>" class="btn btn-default">
<img src="./vue/Images/edit.png" width="20" />
</button>
<button data-toggle="modal" data-target="#formulaireAjout<?= $liste->getId()?>" class="btn btn-default">
<img src="./vue/Images/plus.png" width="20" />
</button>
</span>
</p>
<p><span class="h5 me-2"><?= $liste->getDescription()?></span>
<p class="text-muted pb-2"><?= $liste->getDateCreation()?></p>
</div>
<!-- Fenetre modal -->
<div class="container">
<div class="modal fade" id="formulaireAjout<?= $liste->getId()?>">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Ajout d'une tache</h4>
<button type="button" class="close" data-dismiss="modal">
<span>&times;</span>
</button>
</div>
<div class="modal-body row">
<form class="col" method="POST" >
<div class="form-group">
<label for="nom" class="form-control-label">Nom</label>
<input type="text" class="form-control" name ="nom-ajout" id="nom" placeholder="Entrez un nom" required autofocus>
</div>
<div class="form-group">
<label for="description" class="form-control-label">Description</label>
<input type="text" class="form-control" name="description-ajout" id="description" placeholder="Entrez une description" required autofocus>
</div>
<button type="submit" class="btn btn-primary pull-right">Ajouter</button>
<input type="hidden" name="action" value="AjouterTache">
<input type="hidden" name="idListe" value="<?= $liste->getId() ?>">
</form>
</div>
</div>
</div>
</div>
</div>
<div class="container">
<div class="modal fade" id="formulaireModif<?= $liste->getId()?>">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Modification</h4>
<button type="button" class="close" data-dismiss="modal">
<span>&times;</span>
</button>
</div>
<div class="modal-body row">
<form class="col" method="POST">
<div class="form-group">
<label for="nom" class="form-control-label">Nouveau nom</label>
<input type="text" class="form-control" name ="nom-modif-liste" id="nom" placeholder="<?= $liste->getNom() ?>">
</div>
<div class="form-group">
<label for="description" class="form-control-label">Nouvelle description</label>
<input type="text" class="form-control" name="description-modif-liste" id="description" placeholder="<?= $liste->getDescription() ?>">
</div>
<button type="submit" class="btn btn-primary pull-right">Modifier</button>
<input type="hidden" name="action" value="ModifierListe">
<input type="hidden" name="idListe" value="<?= $liste->getId() ?>">
</form>
</div>
</div>
</div>
</div>
</div>
<!-- Tache -->
<ul class="list-group rounded-0">
<?php
foreach($taches as $tache){
if($tache->getIdListe() == $liste->getId()){
if($tache->getEstValide() == 1){
$done = $done + 1;
}
$total = $total + 1;
?>
<li class="list-group-item border-0 d-flex align-items-center ps-0">
<form name="action" action="check" method="POST">
<input class="form-check-input me-3" id="task-<?= $tache->getId() ?>" type="checkbox" onChange="submit();"
<?php if($tache->getEstValide() == 1) echo "checked" ?>>
<label for="task-<?= $tache->getId() ?>"> <?= $tache->getNom() ?> : <?= $tache->getDescription() ?></label>
<input type="hidden" name="idTache" value="<?= $tache->getId() ?>" >
</form>
<a href="index.php?action=SupprimerTache&idTache=<?= $tache->getId() ?>">
<button class="btn btn-default">
<img src="./vue/Images/trash.png" width="20" />
</button>
</a>
</li>
<?php
}
}
?>
</ul>
</div>
<div class="progress">
<?php
if($total != 0){
$pourcentage = $done * 100 / $total;
} else{
$pourcentage = 0;
}
?>
<div class="progress-bar progress-bar-striped" role="progressbar" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100" style="width: <?php echo"$pourcentage" ?>%;"></div>
</div>
</div>
</div>
</div>
</div>
<?php
}
?>
<div aria-label="Page navigation example" class="NavPage">
<center>
<p>Page n°<?php echo $_SESSION['page'] ?></p>
</center>
<ul class="pagination justify-content-center ">
<li class="page-item">
<a class="page-link" href="previousPage">Previous</a>
</li>
<li class="page-item">
<a class="page-link" href="nextPage">Next</a>
</li>
</ul>
</div>
</body>
<!-- Footer -->
<footer class="text-center text-lg-start bg-light sticky-bottom">
<br>
<!-- Section: Links -->
<section class="">
<div class="container text-center text-md-start mt-5">
<!-- Grid row -->
<div class="row mt-3">
<!-- Grid column -->
<div class="col-md-3 col-lg-4 col-xl-3 mx-auto mb-4">
<!-- Content -->
<h6 class="text-uppercase fw-bold mb-4">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-wallet2" viewBox="0 0 16 16">
<path d="M12.136.326A1.5 1.5 0 0 1 14 1.78V3h.5A1.5 1.5 0 0 1 16 4.5v9a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 13.5v-9a1.5 1.5 0 0 1 1.432-1.499L12.136.326zM5.562 3H13V1.78a.5.5 0 0 0-.621-.484L5.562 3zM1.5 4a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 .5-.5v-9a.5.5 0 0 0-.5-.5h-13z"/>
</svg> Project
</h6>
<p>
2nd year project, consisting of making a To do List in php
, which contains visitors or users, who can add,
delete, see tasks...
</p>
</div>
<!-- Grid column -->
<!-- Grid column -->
<div class="col-md-2 col-lg-2 col-xl-2 mx-auto mb-4">
<!-- Links -->
<h6 class="text-uppercase fw-bold mb-4">
Products
</h6>
<p>
<img src="https://img.shields.io/badge/HTML-000?style=for-the-badge&logo=html5&logoColor=orange&color=f8f9fa">
</img>
</p>
<p>
<img src="https://img.shields.io/badge/CSS-000?style=for-the-badge&logo=Css3&logoColor=blue&color=f8f9fa">
</img>
</p>
<p>
<img src="https://img.shields.io/badge/PHP-000?style=for-the-badge&logo=php&logoColor=purple&color=f8f9fa">
</img>
</p>
<p>
<img src="https://img.shields.io/badge/JavaScript-000?style=for-the-badge&logo=javascript&logoColor=yellow&color=f8f9fa">
</img>
</p>
</div>
<!-- Grid column -->
<!-- Grid column -->
<div class="col-md-4 col-lg-3 col-xl-3 mx-auto mb-md-0 mb-4">
<!-- Links -->
<h6 class="text-uppercase fw-bold mb-4">Contact</h6>
<p>
<svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" fill="currentColor" class="bi bi-envelope" viewBox="0 0 16 16">
<path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4Zm2-1a1 1 0 0 0-1 1v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2Zm13 2.383-4.708 2.825L15 11.105V5.383Zm-.034 6.876-5.64-3.471L8 9.583l-1.326-.795-5.64 3.47A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.741ZM1 11.105l4.708-2.897L1 5.383v5.722Z"/>
</svg>
emre.kartal@etu.uca.fr
</p>
<p>
<svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" fill="currentColor" class="bi bi-envelope" viewBox="0 0 16 16">
<path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4Zm2-1a1 1 0 0 0-1 1v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2Zm13 2.383-4.708 2.825L15 11.105V5.383Zm-.034 6.876-5.64-3.471L8 9.583l-1.326-.795-5.64 3.47A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.741ZM1 11.105l4.708-2.897L1 5.383v5.722Z"/>
</svg>
rayhan.hassou@etu.uca.fr
</p>
<p><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pin" viewBox="0 0 16 16">
<path d="M4.146.146A.5.5 0 0 1 4.5 0h7a.5.5 0 0 1 .5.5c0 .68-.342 1.174-.646 1.479-.126.125-.25.224-.354.298v4.431l.078.048c.203.127.476.314.751.555C12.36 7.775 13 8.527 13 9.5a.5.5 0 0 1-.5.5h-4v4.5c0 .276-.224 1.5-.5 1.5s-.5-1.224-.5-1.5V10h-4a.5.5 0 0 1-.5-.5c0-.973.64-1.725 1.17-2.189A5.921 5.921 0 0 1 5 6.708V2.277a2.77 2.77 0 0 1-.354-.298C4.342 1.674 4 1.179 4 .5a.5.5 0 0 1 .146-.354zm1.58 1.408-.002-.001.002.001zm-.002-.001.002.001A.5.5 0 0 1 6 2v5a.5.5 0 0 1-.276.447h-.002l-.012.007-.054.03a4.922 4.922 0 0 0-.827.58c-.318.278-.585.596-.725.936h7.792c-.14-.34-.407-.658-.725-.936a4.915 4.915 0 0 0-.881-.61l-.012-.006h-.002A.5.5 0 0 1 10 7V2a.5.5 0 0 1 .295-.458 1.775 1.775 0 0 0 .351-.271c.08-.08.155-.17.214-.271H5.14c.06.1.133.191.214.271a1.78 1.78 0 0 0 .37.282z"/>
</svg> Groupe 4</p>
</div>
<!-- Grid column -->
</div>
<!-- Grid row -->
</div>
</section>
<!-- Section: Links -->
<!-- Copyright -->
<div class="text-center p-4" style="background-color: rgba(0, 0, 0, 0.05);">
© 2021 Copyright:
<a class="text-reset fw-bold" href="#">ToDoList.com</a>
</div>
<!-- Copyright -->
</footer>
</html>

@ -0,0 +1,30 @@
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="shortcut icon" href="./vue/Images/gif.gif" type="../Images/gif">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Erreur Page</title>
<!-- CSS only -->
<link rel="stylesheet" href="./vue/css/style.css">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<link rel="stylesheet" href="https:/stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<!-- JavaScript Bundle with Popper -->
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="model">
<h1>Un problème est survenue !</h1>
<?php
if (isset($dVueErreur)) {
foreach ($dVueErreur as $value){
echo $value;
}
}
?>
<a href="VueListePublic">Revenir</a>
</div>
</body>
</html>

@ -0,0 +1,87 @@
<!DOCTYPE html>
<html>
<head>
<title>Page d'inscription</title>
<link rel="shortcut icon" href="./vue/Images/gif.gif" type="../Images/gif">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- CSS only -->
<link rel="stylesheet" href="./vue/css/style.css">
<link rel="stylesheet" href="./vue/css/reset.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
</head>
<body>
<div class="main">
<div class="model">
<div class="main-logo">
<img src="./vue/Images/Logo.png" alt="logo">
</div>
<div class="login-card-header">
<h1>Inscrivez-vous</h1>
</div>
<?php
if(isset($ErreurLog)){?>
<center><p class="ErreurText"> <?php echo $ErreurLog?></p></center><?php
}
?>
<form method="POST" class="login-card-form">
<div class="row">
<div class="col-md-6 mb-4">
<?php
if(isset($dVueErreur['nom'])){?>
<center><p class="ErreurText"> <?php echo $dVueErreur['nom']?></p></center><?php
}
?>
<div>
<input type="text" name="nom-Form" placeholder="Nom" required autofocus>
</div>
</div>
<div class="col-md-6 mb-4">
<?php
if(isset($dVueErreur['prenom'])){?>
<center><p class="ErreurText"> <?php echo $dVueErreur['prenom']?></p></center><?php
}
?>
<div>
<input type="text" name="prenom-Form" placeholder="Prenom" required autofocus>
</div>
</div>
</div>
<div class="form-item">
<?php
if(isset($dVueErreur['pseudo'])){?>
<center><p class="ErreurText"> <?php echo $dVueErreur['pseudo']?></p></center><?php
}
?>
<input type="text" name="pseudo-Form" placeholder="Pseudo" required autofocus>
</div>
<div class="form-item">
<?php
if(isset($dVueErreur['mail'])){?>
<center><p class="ErreurText"> <?php echo $dVueErreur['mail']?></p></center><?php
}
?>
<input type="text" name="mail" placeholder="Mail" required autofocus>
</div>
<div class="form-item">
<?php
if(isset($dVueErreur['password'])){?>
<center><p class="ErreurText"> <?php echo $dVueErreur['password']?></p></center><?php
}
?>
<input type="password" name="password" placeholder="Password" required >
</div>
<button type="submit" class="btn btn-primary">S'inscrire</button>
<!-- action !!!!!!!!!! -->
<input type="hidden" name="action" value="validationFormulaire">
<p class="text-center text-muted mt-5 mb-0">Déjà un compte?
<a href="login" class="fw-bold text-body"><u>Connectez-vous</u></a></p>
</form>
</div>
</div>
</body>
</html>

@ -1,37 +1,38 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="shortcut icon" href="../Images/gif.gif" type="../Images/gif">
<link rel="shortcut icon" href="./vue/Images/gif.gif" type="../Images/gif">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login Page</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">
<link rel="stylesheet" href="../css/style.css">
<!-- CSS only -->
<link rel="stylesheet" href="./vue/css/style.css">
<link rel="stylesheet" href="./vue/css/reset.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL,GRAD@48,300,0,0" />
</head>
<body>
<div class="text-box">
<a href="index.html" class="btn btn-white btn-animate">Rentrer quand même</a>
</div>
<div class="main">
<a class="button" href="VueListePublic">Sortir</a>
<div class="model">
<div class="main-logo">
<img src="../Images/Logo.png" alt="logo">
<img src="./vue/Images/Logo.png" alt="logo">
</div>
<div class="login-card-header">
<h1>Se Connecter</h1>
</div>
<form class="login-card-form">
<?php
if(isset($ErreurLog)){?>
<center><p class="ErreurText"> <?php echo $ErreurLog?></p></center><?php
}
?>
<form method="POST" class="login-card-form">
<div class="form-item">
<span class="form-item-icon material-symbols-rounded">mail</span>
<input type="text" placeholder="Enter Mail" required autofocus>
<input type="text" name="mail" placeholder="Enter Mail" required autofocus>
</div>
<div class="form-item">
<span class="form-item-icon material-symbols-rounded">lock</span>
<input type="password" placeholder="Enter Password" required >
<input type="password" name="password" placeholder="Enter Password" required >
</div>
<div class="form-item-other">
<div class="checkbox">
@ -46,10 +47,13 @@
</div>
<a href="#">Oublie de mot de passe</a>
</div>
<button type="submit">Se connecter</button>
<button type="submit" class="button-body">Se connecter</button>
<!-- action !!!!!!!!!! -->
<input type="hidden" name="action" value="seConnecter">
</form>
<div class="login-card-footer">
Pas de compte? <a href="inscription.html">Creer un compte</a>
Pas de compte ?
<a href="inscription">Creer un compte</a>
</div>
</div>
<div class="social">
@ -61,24 +65,22 @@
<rect x="4" y="4" width="16" height="16" rx="4"></rect>
<circle cx="12" cy="12" r="3"></circle>
<line x1="16.5" y1="7.5" x2="16.5" y2="7.501"></line>
</svg>
</svg>
</a>
<a href="#">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-google" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M17.788 5.108a9 9 0 1 0 3.212 6.892h-8"></path>
</svg>
</svg>
</a>
<a href="#">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-twitter" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M22 4.01c-1 .49 -1.98 .689 -3 .99c-1.121 -1.265 -2.783 -1.335 -4.38 -.737s-2.643 2.06 -2.62 3.737v1c-3.245 .083 -6.135 -1.395 -8 -4c0 0 -4.182 7.433 4 11c-1.872 1.247 -3.739 2.088 -6 2c3.308 1.803 6.913 2.423 10.034 1.517c3.58 -1.04 6.522 -3.723 7.651 -7.742a13.84 13.84 0 0 0 .497 -3.753c-.002 -.249 1.51 -2.772 1.818 -4.013z"></path>
</svg>
</svg>
</a>
</div>
</div>
</div>
</body>
</html>

@ -0,0 +1,144 @@
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="shortcut icon" href="./vue/Images/gif.gif" type="../Images/gif">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Home Page</title>
<!-- CSS only -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<link rel="stylesheet" href="https:/stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="./vue/css/task.css">
<!-- JavaScript Bundle with Popper -->
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
</head>
<body style="-webkit-user-select: none; /* Safari */
-ms-user-select: none; /* IE 10 and IE 11 */
user-select: none;">
<?php require($rep.$vues['NavBar']); ?>
<br>
<br>
<br>
<section class="vh-100" style="background-color: white;">
<div class="container py-5 h-100">
<div class="row d-flex justify-content-center align-items-center h-100">
<div class="col col-xl-10">
<div class="card" style="border-radius: 15px;">
<div class="card-body p-5">
<ul class="list-group mb-0">
<?php
foreach($users as $user){
?>
<li
class="list-group-item d-flex justify-content-between align-items-center border-start-0 border-top-0 border-end-0 border-bottom rounded-0 mb-2">
<div class="d-flex align-items-center">
<?= $user->getNom() ?> : <?= $user->getPrenom() ?>
</div>
<a href="index.php?action=SupprimerUtilisateur&idUser=<?= $user->getId() ?>">
<button class="btn btn-default">
<img src="./vue/Images/trash.png" width="20" />
</button>
</a>
</li>
<?php } ?>
</ul>
</div>
</div>
</div>
</div>
</div>
</section>
</body>
<!-- Footer -->
<footer class="text-center text-lg-start bg-light ">
<br>
<!-- Section: Links -->
<section class="">
<div class="container text-center text-md-start mt-5">
<!-- Grid row -->
<div class="row mt-3">
<!-- Grid column -->
<div class="col-md-3 col-lg-4 col-xl-3 mx-auto mb-4">
<!-- Content -->
<h6 class="text-uppercase fw-bold mb-4">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-wallet2" viewBox="0 0 16 16">
<path d="M12.136.326A1.5 1.5 0 0 1 14 1.78V3h.5A1.5 1.5 0 0 1 16 4.5v9a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 13.5v-9a1.5 1.5 0 0 1 1.432-1.499L12.136.326zM5.562 3H13V1.78a.5.5 0 0 0-.621-.484L5.562 3zM1.5 4a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 .5-.5v-9a.5.5 0 0 0-.5-.5h-13z"/>
</svg> Project
</h6>
<p>
2nd year project, consisting of making a To do List in php
, which contains visitors or users, who can add,
delete, see tasks...
</p>
</div>
<!-- Grid column -->
<!-- Grid column -->
<div class="col-md-2 col-lg-2 col-xl-2 mx-auto mb-4">
<!-- Links -->
<h6 class="text-uppercase fw-bold mb-4">
Products
</h6>
<p>
<img src="https://img.shields.io/badge/HTML-000?style=for-the-badge&logo=html5&logoColor=orange&color=f8f9fa">
</img>
</p>
<p>
<img src="https://img.shields.io/badge/CSS-000?style=for-the-badge&logo=Css3&logoColor=blue&color=f8f9fa">
</img>
</p>
<p>
<img src="https://img.shields.io/badge/PHP-000?style=for-the-badge&logo=php&logoColor=purple&color=f8f9fa">
</img>
</p>
<p>
<img src="https://img.shields.io/badge/JavaScript-000?style=for-the-badge&logo=javascript&logoColor=yellow&color=f8f9fa">
</img>
</p>
</div>
<!-- Grid column -->
<!-- Grid column -->
<div class="col-md-4 col-lg-3 col-xl-3 mx-auto mb-md-0 mb-4">
<!-- Links -->
<h6 class="text-uppercase fw-bold mb-4">Contact</h6>
<p>
<svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" fill="currentColor" class="bi bi-envelope" viewBox="0 0 16 16">
<path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4Zm2-1a1 1 0 0 0-1 1v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2Zm13 2.383-4.708 2.825L15 11.105V5.383Zm-.034 6.876-5.64-3.471L8 9.583l-1.326-.795-5.64 3.47A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.741ZM1 11.105l4.708-2.897L1 5.383v5.722Z"/>
</svg>
emre.kartal@etu.uca.fr
</p>
<p>
<svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" fill="currentColor" class="bi bi-envelope" viewBox="0 0 16 16">
<path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4Zm2-1a1 1 0 0 0-1 1v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2Zm13 2.383-4.708 2.825L15 11.105V5.383Zm-.034 6.876-5.64-3.471L8 9.583l-1.326-.795-5.64 3.47A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.741ZM1 11.105l4.708-2.897L1 5.383v5.722Z"/>
</svg>
rayhan.hassou@etu.uca.fr
</p>
<p><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pin" viewBox="0 0 16 16">
<path d="M4.146.146A.5.5 0 0 1 4.5 0h7a.5.5 0 0 1 .5.5c0 .68-.342 1.174-.646 1.479-.126.125-.25.224-.354.298v4.431l.078.048c.203.127.476.314.751.555C12.36 7.775 13 8.527 13 9.5a.5.5 0 0 1-.5.5h-4v4.5c0 .276-.224 1.5-.5 1.5s-.5-1.224-.5-1.5V10h-4a.5.5 0 0 1-.5-.5c0-.973.64-1.725 1.17-2.189A5.921 5.921 0 0 1 5 6.708V2.277a2.77 2.77 0 0 1-.354-.298C4.342 1.674 4 1.179 4 .5a.5.5 0 0 1 .146-.354zm1.58 1.408-.002-.001.002.001zm-.002-.001.002.001A.5.5 0 0 1 6 2v5a.5.5 0 0 1-.276.447h-.002l-.012.007-.054.03a4.922 4.922 0 0 0-.827.58c-.318.278-.585.596-.725.936h7.792c-.14-.34-.407-.658-.725-.936a4.915 4.915 0 0 0-.881-.61l-.012-.006h-.002A.5.5 0 0 1 10 7V2a.5.5 0 0 1 .295-.458 1.775 1.775 0 0 0 .351-.271c.08-.08.155-.17.214-.271H5.14c.06.1.133.191.214.271a1.78 1.78 0 0 0 .37.282z"/>
</svg> Groupe 4</p>
</div>
<!-- Grid column -->
</div>
<!-- Grid row -->
</div>
</section>
<!-- Section: Links -->
<!-- Copyright -->
<div class="text-center p-4" style="background-color: rgba(0, 0, 0, 0.05);">
© 2021 Copyright:
<a class="text-reset fw-bold" href="#">ToDoList.com</a>
</div>
<!-- Copyright -->
</footer>
</html>

@ -0,0 +1,125 @@
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="shortcut icon" href="./vue/Images/gif.gif" type="../Images/gif">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Profil Page</title>
<!-- CSS only -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<link rel="stylesheet" href="https:/stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<!-- JavaScript Bundle with Popper -->
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
</head>
<body>
<section style="background-color: white;">
<div class="container py-5">
<div class="row">
<div class="col">
<nav aria-label="breadcrumb" class="bg-info rounded-3 p-3 mb-4">
<ol class="breadcrumb mb-0">
<li class="breadcrumb-item"><a href="VueListePublic">Home</a></li>
<li class="breadcrumb-item"><a href="#">User</a></li>
<li class="breadcrumb-item active" aria-current="page">User Profile</li>
</ol>
</nav>
</div>
</div>
<div class="col-lg-15">
<div class="card mb-1">
<div class="card-body">
<div class="col-sm-15 text-center">
<p class="mb-0">Nom Prénom</p>
</div>
<div class="col-sm-14 text-center">
<p class="text-muted mb-0"><?php echo $user->getNom().' '.$user->getPrenom()?></p>
</div>
<hr>
<div class="col-sm-15 text-center">
<p class="mb-0">Pseudo</p>
</div>
<div class="col-sm-14 text-center">
<p class="text-muted mb-0"><?php echo $user->getPseudo()?></p>
</div>
<hr>
<div class="col-sm-15 text-center">
<p class="mb-0">Email</p>
</div>
<div class="col-sm-14 text-center">
<p class="text-muted mb-0"><?php echo $user->getMail()?></p>
</div>
<hr>
<div class="col-sm-15 text-center">
<p class="mb-0">Nombre de liste</p>
</div>
<div class="col-sm-14 text-center">
<p class="text-muted mb-0"><?php echo $nombreListe ?></p>
</div>
</div>
</div>
<div class="text-center">
<br>
<a type="button" class="btn btn-outline-info waves-effect" href="#" data-toggle="modal" data-target="#modalModifier">
Changer mot de passe
</a>
<a type="button" class="btn btn-outline-danger waves-effect" href="#" data-toggle="modal" data-target="#modalSupp">
Supprimer le compte
</a>
<!-- Modal Modifier -->
<div class="modal fade" id="modalModifier" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Modification du mot de passe</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<form class="col" method="POST">
<div class="form-group">
<input type="password" class="form-control" name ="passwordCurrent" placeholder="Mot de passe actuel" required autofocus>
</div>
<div class="form-group">
<input type="password" class="form-control" name="newPassword" id="description" placeholder="Nouveau mot de passe" required autofocus>
</div>
<div class="form-group">
<input type="password" class="form-control" name="confirmNewPassword" id="description" placeholder="Confirmer le mot de passe" required autofocus>
</div>
<button type="submit" class="btn btn-primary pull-right">Terminer</button>
<input type="hidden" name="action" value="modifMdp">
</form>
</div>
</div>
</div>
</div>
<!-- Modal Supprimer -->
<div class="modal fade" id="modalSupp" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Suppression du compte</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
Êtes-vous sûr de vouloir supprimer votre compte ?
</div>
<div class="modal-footer">
<a href="supprimerCompte" class="btn btn-danger">Supprimer quand même</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</body>
</html>
Loading…
Cancel
Save