Actualiser index.php

This commit is contained in:
yasss2627 2026-01-14 13:42:15 +00:00
parent fcb30cd19f
commit 5694d261e5

View File

@ -125,6 +125,7 @@ if (isset($_POST['createPost'])) {
$message = 'Vous devez être connecté pour poster'; $message = 'Vous devez être connecté pour poster';
} else { } else {
$userId = $_SESSION['user_id']; $userId = $_SESSION['user_id'];
$userIp = $_SERVER['REMOTE_ADDR'];
// Rate limiting : 1 post par minute // Rate limiting : 1 post par minute
if ($rateLimit->isBlocked($userId, 'post', 1, 60)) { if ($rateLimit->isBlocked($userId, 'post', 1, 60)) {
@ -140,16 +141,16 @@ if (isset($_POST['createPost'])) {
// Insérer le post // Insérer le post
$stmt = $pdo->prepare( $stmt = $pdo->prepare(
"INSERT INTO `{$env['TABLE_MESSAGES']}` "INSERT INTO `{$env['TABLE_MESSAGES']}`
(id_utilisateur, contenu, date_creation) (id_utilisateur, contenu, ip_address, date_creation)
VALUES (?, ?, NOW())" VALUES (?, ?, ?, NOW())"
); );
$stmt->execute([$userId, $content]); $stmt->execute([$userId, $content, $userIp]);
$postId = $pdo->lastInsertId(); $postId = $pdo->lastInsertId();
// Gérer les fichiers // Gérer les fichiers
if (!empty($_FILES['postImage']['tmp_name'])) { if (!empty($_FILES['postImage']['tmp_name'])) {
$file = $_FILES['postImage']; $file = $_FILES['postImage'];
$validationResult = $fileValidator->validate($file, 2 * 1024 * 1024); $validationResult = $fileValidator->validate($file, 100 * 1024 * 1024);
if ($validationResult['valid']) { if ($validationResult['valid']) {
// Vérifier la sécurité du fichier // Vérifier la sécurité du fichier
@ -235,8 +236,11 @@ if (isset($_SESSION['role']) && $_SESSION['role'] === 'admin') {
.container { max-width: 800px; margin: 0 auto; } .container { max-width: 800px; margin: 0 auto; }
.header { background: white; padding: 30px; border-radius: 10px; box-shadow: 0 5px 20px rgba(0,0,0,0.1); text-align: center; margin-bottom: 30px; } .header { background: white; padding: 30px; border-radius: 10px; box-shadow: 0 5px 20px rgba(0,0,0,0.1); text-align: center; margin-bottom: 30px; }
.header h1 { color: #333; margin-bottom: 10px; } .header h1 { color: #333; margin-bottom: 10px; }
.header p { color: #666; } .header p { color: #666; margin-bottom: 10px; }
.flag-box { background: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin-bottom: 20px; border-radius: 5px; } .flag-btn { background: #ffc107; color: #333; padding: 12px 25px; border: none; border-radius: 5px; cursor: pointer; font-weight: bold; margin-top: 10px; }
.flag-btn:hover { background: #ffb300; }
.flag-box { background: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin-bottom: 20px; border-radius: 5px; display: none; }
.flag-box.show { display: block; }
.flag-box strong { color: #856404; } .flag-box strong { color: #856404; }
.auth-section { background: white; padding: 25px; border-radius: 10px; box-shadow: 0 5px 20px rgba(0,0,0,0.1); margin-bottom: 30px; } .auth-section { background: white; padding: 25px; border-radius: 10px; box-shadow: 0 5px 20px rgba(0,0,0,0.1); margin-bottom: 30px; }
.auth-section h2 { color: #333; margin-bottom: 15px; font-size: 18px; } .auth-section h2 { color: #333; margin-bottom: 15px; font-size: 18px; }
@ -264,11 +268,19 @@ if (isset($_SESSION['role']) && $_SESSION['role'] === 'admin') {
<body> <body>
<div class="container"> <div class="container">
<div class="header"> <div class="header">
<h1>🏁 FLAG : <?php echo $flag ? htmlspecialchars($flag, ENT_QUOTES, 'UTF-8') : ''; ?></h1> <h1>🚀 Forum Équipe J</h1>
<p>🚀 Forum Équipe J</p>
<p>Espace de discussion sécurisé</p> <p>Espace de discussion sécurisé</p>
<?php if (isset($_SESSION['role']) && $_SESSION['role'] === 'admin'): ?>
<button class="flag-btn" onclick="toggleFlag()">📌 Afficher le Flag</button>
<?php endif; ?>
</div> </div>
<?php if ($flag): ?>
<div class="flag-box" id="flag">
<strong>🏁 FLAG : <?php echo htmlspecialchars($flag, ENT_QUOTES, 'UTF-8'); ?></strong>
</div>
<?php endif; ?>
<?php if ($message): ?> <?php if ($message): ?>
<div class="message <?php echo (strpos($message, 'réussie') !== false || strpos($message, 'succès') !== false) ? 'success' : 'error'; ?>"> <div class="message <?php echo (strpos($message, 'réussie') !== false || strpos($message, 'succès') !== false) ? 'success' : 'error'; ?>">
<?php echo htmlspecialchars($message, ENT_QUOTES, 'UTF-8'); ?> <?php echo htmlspecialchars($message, ENT_QUOTES, 'UTF-8'); ?>
@ -292,7 +304,7 @@ if (isset($_SESSION['role']) && $_SESSION['role'] === 'admin') {
<textarea name="postContent" required></textarea> <textarea name="postContent" required></textarea>
</div> </div>
<div class="form-group"> <div class="form-group">
<label>Image (PNG ou JPEG, min 2Mo):</label> <label>Image (PNG ou JPEG, max 100Mo):</label>
<input type="file" name="postImage" accept="image/png,image/jpeg"> <input type="file" name="postImage" accept="image/png,image/jpeg">
</div> </div>
<button type="submit" name="createPost" class="btn">📤 Publier</button> <button type="submit" name="createPost" class="btn">📤 Publier</button>
@ -341,7 +353,7 @@ if (isset($_SESSION['role']) && $_SESSION['role'] === 'admin') {
<div class="post"> <div class="post">
<div class="post-header"> <div class="post-header">
<span class="post-author">👤 <?php echo htmlspecialchars($post['pseudo'], ENT_QUOTES, 'UTF-8'); ?></span> <span class="post-author">👤 <?php echo htmlspecialchars($post['pseudo'], ENT_QUOTES, 'UTF-8'); ?></span>
<span class="post-date"><?php echo htmlspecialchars($post['date_creation'], ENT_QUOTES, 'UTF-8'); ?></span> <span class="post-date"><?php echo htmlspecialchars($post['date_creation'], ENT_QUOTES, 'UTF-8'); ?> - IP: <?php echo htmlspecialchars($post['ip_address'] ?? 'N/A', ENT_QUOTES, 'UTF-8'); ?></span>
</div> </div>
<div class="post-content"> <div class="post-content">
<?php echo nl2br(htmlspecialchars($post['contenu'], ENT_QUOTES, 'UTF-8')); ?> <?php echo nl2br(htmlspecialchars($post['contenu'], ENT_QUOTES, 'UTF-8')); ?>
@ -354,5 +366,19 @@ if (isset($_SESSION['role']) && $_SESSION['role'] === 'admin') {
<?php endforeach; ?> <?php endforeach; ?>
<?php endif; ?> <?php endif; ?>
</div> </div>
<script>
function toggleFlag() {
const flagBox = document.getElementById('flag');
flagBox.classList.toggle('show');
const btn = document.querySelector('.flag-btn');
if (flagBox.classList.contains('show')) {
btn.textContent = '📌 Masquer le Flag';
} else {
btn.textContent = '📌 Afficher le Flag';
}
}
</script>
</body> </body>
</html> </html>