Ajout du changements d'informations sur le /profile. Début pour le /event. Modification du CSS.

Co-authored-by: Charpentier Juliette <juliette.charpentier1@etu.u-pec.fr>
This commit is contained in:
Loris BALOCCHI 2024-06-11 22:49:01 +02:00
parent fb752fb563
commit 3fa7228209
15 changed files with 212 additions and 118 deletions

View File

@ -85,7 +85,7 @@ if (!$email) {
} }
$newURL = "/account/profile"; $newURL = "/";
header("Location: " . $newURL); header("Location: " . $newURL);
die(); die();

View File

@ -48,6 +48,15 @@ if (isset($_COOKIE['userData'])) {
<img src="https://cdn-icons-png.flaticon.com/512/4139/4139948.png" alt="Avatar"> <img src="https://cdn-icons-png.flaticon.com/512/4139/4139948.png" alt="Avatar">
<h2>Mettre à jour mes informations</h2> <h2>Mettre à jour mes informations</h2>
<p>Modifiez les informations de votre profil.</p> <p>Modifiez les informations de votre profil.</p>
<?php
if (isset($_GET['result'])) {
if ($_GET['result'] == "updatefailed") {
echo "<p class='text' style='color:red; padding-left:0;'>❎ Une erreur est survenue lors de la mise à jour de vos informations.</p>";
} else if ($_GET["result"] == "updatesuccess") {
echo "<p class='text' style='color:green; padding-left:0;'>✅ Vos informations ont été mises à jour avec succès.</p>";
}
}
?>
<form action="/tools/updater.php" method="post"> <form action="/tools/updater.php" method="post">
<div class="form-group"> <div class="form-group">
<label for="name"><span style="color:red;"><abbr title="Requis">*</abbr></span> Prénom</label> <label for="name"><span style="color:red;"><abbr title="Requis">*</abbr></span> Prénom</label>

View File

@ -98,7 +98,7 @@ require_once $_SERVER['DOCUMENT_ROOT'] . '/tools/dbConnect.php';
echo "<p class='text'>Rôle : " . $role . "</p>"; echo "<p class='text'>Rôle : " . $role . "</p>";
?> ?>
<script type="text/javascript"> <script type="text/javascript">
window.location.href = '/account/profile'; window.location.href = '/';
</script> <?php </script> <?php
} else { } else {
echo "<p class='text'>Aucun utilisateur n\'a été ajouté.</p>"; echo "<p class='text'>Aucun utilisateur n\'a été ajouté.</p>";

View File

@ -1,5 +1,6 @@
<?php <?php
require_once $_SERVER['DOCUMENT_ROOT'] . '/tools/dbConnect.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/tools/dbConnect.php';
session_start();
if (isset($_COOKIE['userData'])) { if (isset($_COOKIE['userData'])) {
$userDataEncoded = $_COOKIE['userData']; $userDataEncoded = $_COOKIE['userData'];
@ -34,20 +35,26 @@ if (isset($_COOKIE['userData'])) {
<?php include $_SERVER['DOCUMENT_ROOT'] . '/views/header.php'; ?> <?php include $_SERVER['DOCUMENT_ROOT'] . '/views/header.php'; ?>
<h1>Panel d'administration</h1> <h1>Panel d'administration</h1>
<?php <?php
if (isset($_COOKIE['userData'])) { if (!isset($_COOKIE['userData'])) {
$role = $userData['role']; echo "<p class='text'>Vous n'êtes pas autorisé à accéder à cette page.</p>";
if ($role == 'Administrateur') { echo "<p class='text'>Redirection vers l'accueil dans 5 secondes...</p>";
echo "<p class='text'>Vous êtes connecté en tant qu'administrateur.</p>"; header("refresh:5; url=/");
die();
} }
} else {
include ($_SERVER['DOCUMENT_ROOT'] . '/views/footer.php');
die("<p class='text'>Vous n'êtes pas autorisé à accéder à cette page.</p>"); $role = $userData['role'];
if ($role != 'Administrateur') {
echo "<p class='text'>Vous n'êtes pas autorisé à accéder à cette page.</p>";
echo "<p class='text'>Redirection vers l'accueil dans 5 secondes...</p>";
header("refresh:5; url=/");
die();
} else { // Si l'utilisateur est un administrateur : accès à la page
echo "<p class='text'>Bienvenue sur le panneau d'administration du site.</p>";
echo "<p class='text'>Vous pouvez ici gérer les utilisateurs.</p>";
echo "<p class='text'>Que souhaitez-vous faire ?</p>";
//contenu de la page admin
} ?> } ?>
<!-- code de la page ici -->
<?php include $_SERVER['DOCUMENT_ROOT'] . '/views/footer.php'; ?> <?php include $_SERVER['DOCUMENT_ROOT'] . '/views/footer.php'; ?>
</body> </body>

View File

@ -39,7 +39,7 @@ if (isset($_COOKIE['userData'])) {
</head> </head>
<body> <body>
<?php include?> <?php include ($_SERVER['DOCUMENT_ROOT'] . '/views/header.php') ?>
<!-- code de la page ici --> <!-- code de la page ici -->

View File

@ -19,10 +19,33 @@
<!-- code de la page ici --> <!-- code de la page ici -->
<h1>Évènements</h1> <h1>Évènements</h1>
<?php
if (isset($_POST['discipline'])) {
$selectedDiscipline = $_POST['discipline'];
$descriptionResult = mysqli_query($db, "SELECT description FROM `olympic_discipline` WHERE discipline = '$selectedDiscipline'");
while ($row = mysqli_fetch_assoc($descriptionResult)) {
echo "<p class='text'>" . $row['description'] . "</p>";
}
}
?>
<form method="POST">
<?php
$evenement = mysqli_query($db, "SELECT discipline FROM `olympic_discipline` ");
echo "<select name='discipline'>";
while ($row = mysqli_fetch_assoc($evenement)) {
echo "<option>" . $row['discipline'] . "</option>";
}
echo "</select>";
?>
<button><input type="submit" value="Afficher la description"></button>
</form>
<?php include ($_SERVER['DOCUMENT_ROOT'] . '/views/footer.php') ?> <?php include ($_SERVER['DOCUMENT_ROOT'] . '/views/footer.php') ?>
<script src="https://kit.fontawesome.com/f16a36bad3.js" crossorigin="anonymous"></script>
</body> </body>
</html> </html>

View File

@ -1,9 +1,17 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="fr">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="title" content="Jeux Olympiques - Paris 2024" />
<meta name="description" content="Site non-officiel des Jeux-Olympiques Paris 2024 (SAÉ Web)" />
<meta name="keywords" content="Jeux-Olympiques, Paris, 2024, Informatique, SAÉ" />
<meta name="author" content="Juliette CHARPENTIER & Loris BALOCCHI" />
<meta name="robots" content="index, follow" />
<meta name="revisit-after" content="7 days" />
<meta name="language" content="French" />
<meta name="theme-color" content="#d41942" />
<link rel="stylesheet" href="/styles/main.css" /> <link rel="stylesheet" href="/styles/main.css" />
<link rel="stylesheet" href="/styles/header.css" /> <link rel="stylesheet" href="/styles/header.css" />
<link rel="stylesheet" href="/styles/footer.css" /> <link rel="stylesheet" href="/styles/footer.css" />
@ -11,8 +19,6 @@
<link rel="icon" type="image/png" sizes="32x32" <link rel="icon" type="image/png" sizes="32x32"
href="https://tickets.paris2024.org/obj/media/FR-Paris2024/specialLogos/favicons/favicon-32x32.png" /> href="https://tickets.paris2024.org/obj/media/FR-Paris2024/specialLogos/favicons/favicon-32x32.png" />
<link rel="stylesheet" type="text/css" href="./style.css"> <!--truc pour la barre de recherche-->
<title>Accueil | Jeux Olympiques - Paris 2024</title> <title>Accueil | Jeux Olympiques - Paris 2024</title>
</head> </head>
@ -26,16 +32,21 @@
2024.</p> 2024.</p>
<p class="text">Vous pourrez également créer un compte pour accéder à des fonctionnalités supplémentaires.</p> <p class="text">Vous pourrez également créer un compte pour accéder à des fonctionnalités supplémentaires.</p>
<!-- barre de recherche --> <!-- barre de recherche -->
<input id="searchbar" onkeyup="rechercher_evenement()" type="text" name="search" <div class="searchbar">
placeholder="Rechercher évènement.."> <input id="searchbar" placeholder="Rechercher évènement" type="text">
<button type="submit"><i class="fas fa-search"></i> Rechercher</button>
</div>
<?php
// $evenement = $_GET['bdr'];
// $recherche = mysqli_query($db, "SELECT discipline
// FROM olympic_discipline
// WHERE discipline = '$evenement'");
?>
<!-- linking javascript -->
<script src="./animals.js"></script>
<br><br><br><br><br><br><br><br><br>
<?php include ($_SERVER['DOCUMENT_ROOT'] . '/views/footer.php') ?> <?php include ($_SERVER['DOCUMENT_ROOT'] . '/views/footer.php') ?>

View File

@ -13,6 +13,7 @@
opacity: 0.97; opacity: 0.97;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.5); box-shadow: 0 4px 6px rgba(0, 0, 0, 0.5);
font-family: RobotoFlex; font-family: RobotoFlex;
margin-top: auto;
} }
.site-footer hr { .site-footer hr {
border-top-color: #bbb; border-top-color: #bbb;

View File

@ -12,9 +12,10 @@ body {
display: flex; display: flex;
align-items: center; align-items: center;
margin-bottom: 20px; margin-bottom: 20px;
background: #232323; background: #26272b;
color: #cdcdcd; color: #cdcdcd;
padding: 20px; padding-inline: 20px;
height: 92px;
z-index: 1; z-index: 1;
-webkit-user-select: none; -webkit-user-select: none;
user-select: none; user-select: none;
@ -102,7 +103,8 @@ body {
.menu li { .menu li {
margin-top: 1rem; margin-top: 1rem;
font-size: 21px; font-size: 18px;
vertical-align: center;
} }
/* mobile styles */ /* mobile styles */
@ -174,6 +176,7 @@ body {
.menu ul { .menu ul {
display: flex; display: flex;
padding: 0; padding: 0;
align-items: center;
} }
.menu li { .menu li {

View File

@ -17,6 +17,9 @@ body {
overflow-x: hidden; overflow-x: hidden;
font-family: "RobotoFlex"; font-family: "RobotoFlex";
margin: 0; margin: 0;
min-height: 100dvh;
display: flex;
flex-direction: column;
} }
body::before { body::before {
content: ""; content: "";
@ -29,7 +32,7 @@ body::before {
z-index: -1; z-index: -1;
} }
.login-container { .login-container {
background: #232323; background: #26272b;
align-items: center; align-items: center;
opacity: 1; opacity: 1;
@ -170,3 +173,46 @@ p.text {
padding-left: 2rem; padding-left: 2rem;
font-family: "RobotoFlex"; font-family: "RobotoFlex";
} }
.avatar {
width: 48px;
height: 48px;
display: block;
}
.searchbar {
display: flex;
justify-content: center;
margin-top: 1rem;
padding-left: 2rem;
padding-right: 2rem;
}
.searchbar input {
width: 100%;
padding: 0.5rem;
border: 1px solid #121216;
border-radius: 5px;
background-color: #34353a;
color: #fffe;
transition: all 0.3s ease;
}
.searchbar input:focus,
.searchbar input:not(:placeholder-shown) {
border-color: #007bff;
}
.searchbar button {
padding: 0.5rem;
border: none;
background-color: #f4b400;
color: white;
font-size: 1rem;
font-weight: 700;
cursor: pointer;
border-radius: 5px;
transition: all 0.3s ease;
width: 17rem;
margin-left: 0.25rem;
}
.searchbar button:hover {
background-color: #f4a400;
}

View File

@ -32,5 +32,5 @@ session_destroy();
// Rediriger l'utilisateur vers la page de connexion ou la page d'accueil // Rediriger l'utilisateur vers la page de connexion ou la page d'accueil
header("Location: /account/login"); header("Location: /account/login");
exit(); // Assurez-vous de terminer le script après la redirection exit();
?> ?>

View File

@ -1,27 +1,70 @@
<?php <?php
require_once $_SERVER['DOCUMENT_ROOT'] . '/tools/dbConnect.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/tools/dbConnect.php';
session_start();
/* /*
- prénom, nom, mail, mdp, code rôle - récupérer name, family_name, mail, password
- vérifier que le mail n'existe pas déjà - vérifier que le mail n'existe pas déjà (n'appartient pas à un autre utilisateur)
- vérifier que le code rôle est correct, et affecter le rôle correspondant - préparer la requête UPDATE
- hasher le mdp - exécuter la requête
- enregistrer le nouvel utilisateur dans la bdd - si succès,
- créer un cookie avec mail, nom, prénom, rôle. Qui expire dans 1h - supprimer cookie existat
- créer un cookie avec mail, nom, prénom, rôle. Qui expire dans 1h
- si échec rediriger vers /account/profile?result=updatefailed
*/ */
if (isset($_COOKIE['userData'])) {
$userDataEncoded = $_COOKIE['userData'];
$userData = json_decode($userDataEncoded, true); // 'true' pour obtenir un tableau associatif
$email = $userData['email'];
$oldEmail = $userData['email'];
$name = $userData['name'];
$familyName = $userData['familyName'];
$role = $userData['role'];
}
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = htmlspecialchars($_POST["name"]);
$familyName = htmlspecialchars($_POST["family_name"]);
$email = htmlspecialchars($_POST["email"]);
$password = htmlspecialchars($_POST["password"]);
$hashedPassword = sha1($password);
$updateUser = "UPDATE `user` SET `mail`='$email',`name`='$name',`family_name`='$familyName',`password`='$hashedPassword' WHERE mail = '$oldEmail'";
$resultUpdateUser = mysqli_query($db, $updateUser);
if ($resultUpdateUser) {
setcookie("userData", "", time() - 3600, "/");
$role = $userData['role'];
$userData = array(
"email" => $email,
"name" => $name,
"familyName" => $familyName,
"role" => $role,
);
$userDataEncoded = json_encode($userData);
setcookie("userData", $userDataEncoded, time() + 3600, "/");
echo "<p class='text'>Utilisateur mis à jour avec succès. </p>";
header("Location: /account/profile?result=updatesuccess");
} else {
echo "<p class='text'>Erreur lors de l'exécution de la requête.</p>";
header("Location: /account/profile?result=updatefailed");
}
}
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="fr">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="../../styles/main.css" /> <link rel="stylesheet" href="/styles/main.css" />
<link rel="stylesheet" href="../../styles/header.css" /> <link rel="stylesheet" href="/styles/header.css" />
<link rel="stylesheet" href="../../styles/footer.css" /> <link rel="stylesheet" href="/styles/footer.css" />
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet" /> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet" />
<link rel="icon" type="image/png" sizes="32x32" <link rel="icon" type="image/png" sizes="32x32"
@ -31,74 +74,19 @@ require_once $_SERVER['DOCUMENT_ROOT'] . '/tools/dbConnect.php';
</head> </head>
<body> <body>
<?php include ($_SERVER['DOCUMENT_ROOT'] . '/views/header.php'); <?php include ($_SERVER['DOCUMENT_ROOT'] . '/views/header.php') ?>
if ($_SERVER["REQUEST_METHOD"] == "POST") { <?php
$name = htmlspecialchars($_POST["name"]); echo "<p class='text'>Données reçues : </p>";
$familyName = htmlspecialchars($_POST["family_name"]); echo "<p class='text'>email : $email</p>";
$email = htmlspecialchars($_POST["email"]); echo "<p class='text'>name : $name</p>";
$password = htmlspecialchars($_POST["password"]); echo "<p class='text'>familyName : $familyName</p>";
} echo "<p class='text'>password : $password</p>";
echo "<p class='text'>hashedPassword : $hashedPassword</p>";
$hashedPassword = sha1($password); echo "<p class='text'>oldEmail : $oldEmail</p>";
$query = "SELECT mail FROM user WHERE mail = '$email'";
$result = mysqli_query($db, $query);
if (!$result) {
die("Erreur lors de l'exécution de la requête.");
}
$row = mysqli_fetch_assoc($result);
if ($row) {
die("<p>Un utilisateur avec cette adresse mail existe déjà.</p>");
}
$addUser = "INSERT INTO `user`(`mail`, `name`, `family_name`, `role`, `password`) VALUES ('$email', '$name', '$familyName', '$role', '$hashedPassword')";
$resultAddUser = mysqli_query($db, $addUser);
if (!$resultAddUser) {
echo "<p class='text'>Erreur lors de l'exécution de la requête.</p>";
} else {
if (mysqli_affected_rows($db) > 0) {
echo "<p class='text'>Utilisateur créé avec succès. </p>";
// Créer un tableau avec les données utilisateur
$userData = array(
"email" => $email,
"name" => $name,
"familyName" => $familyName,
"role" => $role,
);
// Sérialiser le tableau en JSON
$userDataEncoded = json_encode($userData);
// Stocker les données sérialisées dans un cookie
setcookie("userData", $userDataEncoded, time() + 3600, "/");
echo "<p class='text'>Cookie créé avec succès. Contenu du cookie :</p>";
echo "<p class='text'>" . $userDataEncoded . "</p>";
echo "<p class='text'>Prénom : " . $name . "</p>";
echo "<p class='text'>Nom : " . $familyName . "</p>";
echo "<p class='text'>Adresse mail : " . $email . "</p>";
echo "<p class='text'>Mot de passe : " . $password . "</p>";
echo "<p class='text'>Mot de passe hashé : " . $hashedPassword . "</p>";
echo "<p class='text'>Rôle : " . $role . "</p>";
?> ?>
<script type="text/javascript">
window.location.href = '/account/profile';
</script> <?php
} else {
echo "<p class='text'>Aucun utilisateur n\'a été ajouté.</p>";
}
}
<?php include ($_SERVER['DOCUMENT_ROOT'] . '/views/footer.php') ?>
include ($_SERVER['DOCUMENT_ROOT'] . '/views/footer.php');
?>
</body> </body>
</html> </html>

View File

@ -17,10 +17,10 @@ if (isset($_COOKIE['userData'])) {
<div class="row"> <div class="row">
<div class="col-sm-12 col-md-6"> <div class="col-sm-12 col-md-6">
<h6>à propos</h6> <h6>à propos</h6>
<p class="text-justify">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quo consequatur illum, <p class="text-justify">Ce site est le fruit d'une SAÉ en informatique, développé par deux
officiis nisi porro minus voluptates impedit unde perspiciatis commodi? Mollitia dolores dolore étudiants, destiné à simuler des fonctionnalités du site officiel des Jeux Olympiques de Paris 2024.
deserunt. Numquam officia ex vitae, ipsum veritatis atque recusandae accusantium consequatur Il a été conçu pour démontrer nos compétences en développement web et en gestion de données, tout en
dolorum.</p> offrant une expérience utilisateur interactive et informative.</p>
</div> </div>
<div class="col-xs-6 col-md-3"> <div class="col-xs-6 col-md-3">

View File

@ -14,7 +14,9 @@ if (isset($_COOKIE['userData'])) {
<nav class="menu-container"> <nav class="menu-container">
<!-- burger menu --> <!-- burger menu -->
<input type="checkbox" aria-label="Toggle menu" /> <input type="checkbox" aria-label="Toggle menu" />
<span></span> <span></span>
<span></span> <span></span>
<span></span> <span></span>
@ -42,23 +44,27 @@ if (isset($_COOKIE['userData'])) {
</li> </li>
</ul> </ul>
<ul> <ul>
<li><?php
if (isset($_COOKIE['userData'])) {
echo "<a href='/tools/logout.php' title='Déconnexion'><i class='fas fa-sign-out-alt'></i></a>";
}
?></li>
<li> <li>
<?php <?php
if (isset($_COOKIE['userData'])) { if (isset($_COOKIE['userData'])) {
echo "<a href='/account/profile'>Mon profil</a>"; //echo "<a href='/account/profile'>Mon profil</a>";
$userName = "" . $userData['name'] . " " . $userData['familyName'] . "";
echo "<a href='/account/profile'><img class='avatar' src='https://cdn-icons-png.flaticon.com/64/4139/4139948.png' title=" . $userName . "></a>";
//echo "<br>" . $userData['name'] . " " . $userData['familyName'];
} else { } else {
echo "<a href='/account/login'>Connexion</a>"; echo "<a href='/account/login'>Connexion</a>";
} }
?> ?>
<!-- script php qui vérifie le cookie. Si cookie, propose déconnexion, si pas cookie propose connexion -->
</li> </li>
<li><?php
if (isset($_COOKIE['userData'])) {
echo "<a href='/tools/logout.php'>Déconnexion</a>";
}
?></li>
</ul> </ul>
</div> </div>
</nav> </nav>
<script src="https://kit.fontawesome.com/f16a36bad3.js" crossorigin="anonymous"></script>