Compare commits

..

No commits in common. 'master' and 'rayhan_gatewayTache' have entirely different histories.

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

@ -1,10 +1,8 @@
# Presentation Projet_ToDoList_Php
<div align = center>
**<p align="center">
![Image de l'application](Logo.png)
</div>
</p>**
**Nom de lapplication** : ToDoList
</br>
@ -16,67 +14,22 @@
</br>
:information_source: Réaliser un projet de PHP consistant à faire une To do List, qui contiendra des visiteurs, utilisateurs ou administrateur.
# Fonctionnalités
:information_source: Réaliser un projet de PHP consistant à faire une To do List, qui contiendra des visiteurs ou utilisateurs.
- 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
# Repartition du Gitlab
- 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:
La racine de notre gitlab est composé 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, Diagramme de classe)**
[**doc**](doc) : **Documentation de l'application, englobant la phase avant le commencement de l'application (Maquette, Diagramme de classe UML)**
# Environnement de Travail
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>
Notre environnement de travail se base essentiellement sur du php et du HTML/CSS.
# 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:
<br>
⚙️ Emre KARTAL
<br>
⚙️ Rayhan HASSOU
<br>
<div align = center>
© Groupe 4
</div>
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)

@ -1,235 +0,0 @@
-- 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 */;

@ -1 +0,0 @@
<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.

Before

Width:  |  Height:  |  Size: 17 KiB

@ -1 +1 @@
<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>
<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>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 106 KiB

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
<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.

After

Width:  |  Height:  |  Size: 33 KiB

@ -1,34 +0,0 @@
#--------------------------------
# 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]

@ -0,0 +1,91 @@
<?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
?>

@ -0,0 +1,18 @@
<?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;
}

@ -0,0 +1,24 @@
<?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.

After

Width:  |  Height:  |  Size: 208 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 896 KiB

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Before

Width:  |  Height:  |  Size: 1.4 MiB

After

Width:  |  Height:  |  Size: 1.4 MiB

@ -0,0 +1,89 @@
* {
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);
}

@ -0,0 +1,355 @@
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;
}

@ -0,0 +1,233 @@
@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,4 +1,4 @@
@import url("./Vue/css/reset.css");
@import url("reset.css");
@import url('https://fonts.googleapis.com/css2?family-Poppins:wght@400;600&display-swap');
@ -12,9 +12,6 @@ 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 {
@ -26,6 +23,69 @@ 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 {
@ -213,6 +273,16 @@ 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;
@ -259,57 +329,6 @@ 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,18 @@
<html>
<head><title>Erreur</title>
</head>
<body>
<h1>ERREUR !!!!!</h1>
<?php
if (isset($dVueEreur)) {
foreach ($dVueEreur as $value){
echo $value;
}
}
?>
</body> </html>

@ -0,0 +1,58 @@
<!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>

@ -0,0 +1,54 @@
<!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,38 +1,37 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="shortcut icon" href="./vue/Images/gif.gif" type="../Images/gif">
<link rel="shortcut icon" href="../Images/gif.gif" type="../Images/gif">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login Page</title>
<!-- CSS only -->
<link rel="stylesheet" href="./vue/css/style.css">
<link rel="stylesheet" href="./vue/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">
<link rel="stylesheet" href="../css/style.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="./vue/Images/Logo.png" alt="logo">
<img src="../Images/Logo.png" alt="logo">
</div>
<div class="login-card-header">
<h1>Se Connecter</h1>
</div>
<?php
if(isset($ErreurLog)){?>
<center><p class="ErreurText"> <?php echo $ErreurLog?></p></center><?php
}
?>
<form method="POST" class="login-card-form">
<form class="login-card-form">
<div class="form-item">
<span class="form-item-icon material-symbols-rounded">mail</span>
<input type="text" name="mail" placeholder="Enter Mail" required autofocus>
<input type="text" placeholder="Enter Mail" required autofocus>
</div>
<div class="form-item">
<span class="form-item-icon material-symbols-rounded">lock</span>
<input type="password" name="password" placeholder="Enter Password" required >
<input type="password" placeholder="Enter Password" required >
</div>
<div class="form-item-other">
<div class="checkbox">
@ -47,13 +46,10 @@
</div>
<a href="#">Oublie de mot de passe</a>
</div>
<button type="submit" class="button-body">Se connecter</button>
<!-- action !!!!!!!!!! -->
<input type="hidden" name="action" value="seConnecter">
<button type="submit">Se connecter</button>
</form>
<div class="login-card-footer">
Pas de compte ?
<a href="inscription">Creer un compte</a>
Pas de compte? <a href="inscription.html">Creer un compte</a>
</div>
</div>
<div class="social">
@ -65,22 +61,24 @@
<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,78 @@
<!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>

@ -0,0 +1,53 @@
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);

@ -0,0 +1,96 @@
<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,5 +1,6 @@
<?php
//prs0 compliant
class Autoload
{
private static $_instance = null;
@ -30,19 +31,22 @@ class Autoload
}
}
private static function _autoload($class)
private static function _autoload($className)
{
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;
}
}
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;
}
}

@ -1,31 +0,0 @@
<?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();
}
}

@ -0,0 +1,155 @@
<?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,127 +1,40 @@
<?php
class Validation {
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*";
}
namespace config;
class Validation {
if (!preg_match('/^.{5,}$/', $mdp)) {
$dVueErreur['password'] = "Mot de passe trop léger : Plus de 5 caractères minimum !";
}
static function val_action($action) {
if(count($dVueErreur)>0){
throw new Exception("Erreur lors de l'inscription*");
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';
}
}
static function val_form(string &$nom, string &$age, &$dVueEreur) {
static function cleanString(string &$str) {
$str = preg_replace('/[^A-Za-z\-]/', '', $str);
if($str == null || $str == '')
{
return null;
if (!isset($nom)||$nom=="") {
$dVueEreur[] = "pas de nom";
$nom="";
}
return $str;
}
static function cleanPseudo(string &$str) {
$str = preg_replace('/[^A-Za-z\-\^0-9]/', '', $str);
if($str == null || $str == '')
if ($nom != filter_var($nom, FILTER_SANITIZE_STRING))
{
return null;
}
return $str;
}
$dVueEreur[] = "testative d'injection de code (attaque sécurité)";
$nom="";
static function cleanMail(string &$str) {
$str = preg_replace('/[^A-Za-z\-\^0-9\.\@]/', '', $str);
if($str == null || $str == '')
{
return null;
}
return $str;
}
static function val_form_add(string &$nom,string &$description,&$dVueErreur) {
$nom = Validation::cleanText($nom);
if ($nom == NULL) {
$dVueErreur['nom'] = "Veuillez entrer un nom*";
if (!isset($age)||$age==""||!filter_var($age, FILTER_VALIDATE_INT)) {
$dVueEreur[] = "pas d'age ";
$age=0;
}
$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,19 +3,24 @@
//gen
$rep=__DIR__.'/../';
// liste des modules à inclure
//$dConfig['includes']= array('controleur/Validation.php');
//BD
$user='emkartal1';
$pass='achanger';
$dsn='mysql:host=londres.uca.local;dbname=dbemkartal1';
$base="dbrahassou";
$login="rahassou";
$mdp="achanger";
//Vues
$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';
$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';
?>

@ -1,71 +0,0 @@
<?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
?>

@ -1,228 +0,0 @@
<?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
?>

@ -1,238 +0,0 @@
<?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
?>

@ -1,69 +0,0 @@
<?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,11 +7,23 @@
//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();
$cont = new FrontControleur();
//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();
?>

@ -1,32 +0,0 @@
<?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']);
}
}

@ -1,158 +0,0 @@
<?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);
}
}

@ -1,90 +0,0 @@
<?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);
}
}

@ -1,69 +0,0 @@
<?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;
}
}
?>

@ -1,60 +0,0 @@
<?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)));
}
}
?>

@ -1,102 +0,0 @@
<?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*");
}
}
}
?>

@ -1,70 +0,0 @@
<?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;
}
}

@ -1,75 +0,0 @@
<?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;
}
}

@ -1,65 +0,0 @@
<?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;
}
}
?>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

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

@ -1,63 +0,0 @@
<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>

@ -1,356 +0,0 @@
<!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>

@ -1,340 +0,0 @@
<!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>

@ -1,30 +0,0 @@
<!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>

@ -1,87 +0,0 @@
<!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,144 +0,0 @@
<!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>

@ -1,125 +0,0 @@
<!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