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);
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">
<h2>Mettre à jour mes informations</h2>
<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">
<div class="form-group">
<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>";
?>
<script type="text/javascript">
window.location.href = '/account/profile';
window.location.href = '/';
</script> <?php
} else {
echo "<p class='text'>Aucun utilisateur n\'a été ajouté.</p>";

View File

@ -1,5 +1,6 @@
<?php
require_once $_SERVER['DOCUMENT_ROOT'] . '/tools/dbConnect.php';
session_start();
if (isset($_COOKIE['userData'])) {
$userDataEncoded = $_COOKIE['userData'];
@ -34,20 +35,26 @@ if (isset($_COOKIE['userData'])) {
<?php include $_SERVER['DOCUMENT_ROOT'] . '/views/header.php'; ?>
<h1>Panel d'administration</h1>
<?php
if (isset($_COOKIE['userData'])) {
$role = $userData['role'];
if ($role == 'Administrateur') {
echo "<p class='text'>Vous êtes connecté en tant qu'administrateur.</p>";
if (!isset($_COOKIE['userData'])) {
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 {
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'; ?>
</body>

View File

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

View File

@ -19,10 +19,33 @@
<!-- code de la page ici -->
<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') ?>
<script src="https://kit.fontawesome.com/f16a36bad3.js" crossorigin="anonymous"></script>
</body>
</html>

View File

@ -1,9 +1,17 @@
<!DOCTYPE html>
<html lang="en">
<html lang="fr">
<head>
<meta charset="UTF-8" />
<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/header.css" />
<link rel="stylesheet" href="/styles/footer.css" />
@ -11,8 +19,6 @@
<link rel="icon" type="image/png" sizes="32x32"
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>
</head>
@ -26,16 +32,21 @@
2024.</p>
<p class="text">Vous pourrez également créer un compte pour accéder à des fonctionnalités supplémentaires.</p>
<!-- barre de recherche -->
<input id="searchbar" onkeyup="rechercher_evenement()" type="text" name="search"
placeholder="Rechercher évènement..">
<div class="searchbar">
<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') ?>

View File

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

View File

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

View File

@ -17,6 +17,9 @@ body {
overflow-x: hidden;
font-family: "RobotoFlex";
margin: 0;
min-height: 100dvh;
display: flex;
flex-direction: column;
}
body::before {
content: "";
@ -29,7 +32,7 @@ body::before {
z-index: -1;
}
.login-container {
background: #232323;
background: #26272b;
align-items: center;
opacity: 1;
@ -170,3 +173,46 @@ p.text {
padding-left: 2rem;
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
header("Location: /account/login");
exit(); // Assurez-vous de terminer le script après la redirection
exit();
?>

View File

@ -1,27 +1,70 @@
<?php
require_once $_SERVER['DOCUMENT_ROOT'] . '/tools/dbConnect.php';
session_start();
/*
- prénom, nom, mail, mdp, code rôle
- vérifier que le mail n'existe pas déjà
- vérifier que le code rôle est correct, et affecter le rôle correspondant
- hasher le mdp
- enregistrer le nouvel utilisateur dans la bdd
- récupérer name, family_name, mail, password
- vérifier que le mail n'existe pas déjà (n'appartient pas à un autre utilisateur)
- préparer la requête UPDATE
- exécuter la requête
- si succès,
- 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>
<html lang="fr">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="../../styles/main.css" />
<link rel="stylesheet" href="../../styles/header.css" />
<link rel="stylesheet" href="../../styles/footer.css" />
<link rel="stylesheet" href="/styles/main.css" />
<link rel="stylesheet" href="/styles/header.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 rel="icon" type="image/png" sizes="32x32"
@ -31,74 +74,19 @@ require_once $_SERVER['DOCUMENT_ROOT'] . '/tools/dbConnect.php';
</head>
<body>
<?php include ($_SERVER['DOCUMENT_ROOT'] . '/views/header.php');
<?php include ($_SERVER['DOCUMENT_ROOT'] . '/views/header.php') ?>
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);
$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>";
<?php
echo "<p class='text'>Données reçues : </p>";
echo "<p class='text'>email : $email</p>";
echo "<p class='text'>name : $name</p>";
echo "<p class='text'>familyName : $familyName</p>";
echo "<p class='text'>password : $password</p>";
echo "<p class='text'>hashedPassword : $hashedPassword</p>";
echo "<p class='text'>oldEmail : $oldEmail</p>";
?>
<script type="text/javascript">
window.location.href = '/account/profile';
</script> <?php
} else {
echo "<p class='text'>Aucun utilisateur n\'a été ajouté.</p>";
}
}
include ($_SERVER['DOCUMENT_ROOT'] . '/views/footer.php');
?>
<?php include ($_SERVER['DOCUMENT_ROOT'] . '/views/footer.php') ?>
</body>
</html>

View File

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

View File

@ -14,7 +14,9 @@ if (isset($_COOKIE['userData'])) {
<nav class="menu-container">
<!-- burger menu -->
<input type="checkbox" aria-label="Toggle menu" />
<span></span>
<span></span>
<span></span>
@ -42,23 +44,27 @@ if (isset($_COOKIE['userData'])) {
</li>
</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>
<?php
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 {
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><?php
if (isset($_COOKIE['userData'])) {
echo "<a href='/tools/logout.php'>Déconnexion</a>";
}
?></li>
</ul>
</div>
</nav>
<script src="https://kit.fontawesome.com/f16a36bad3.js" crossorigin="anonymous"></script>