File size: 5.06Kb
<?php
require_once 'db.php';
if (empty($_SESSION['user_id'])) {
header('Location: login.php');
exit;
}
$user_id = (int)$_SESSION['user_id'];
if (is_banned($user_id)) {
include 'header.php';
echo '<p>Ваш аккаунт заблокирован. Обратитесь в поддержку.</p>';
include 'footer.php';
exit;
}
$errors = [];
$success = false;
// удаление фото
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['delete_id'])) {
$photo_id = (int)$_POST['delete_id'];
// проверяем, что фото принадлежит этому пользователю
$stmt = $mysqli->prepare("SELECT filename FROM user_photos WHERE id = ? AND user_id = ?");
$stmt->bind_param('ii', $photo_id, $user_id);
$stmt->execute();
$stmt->bind_result($filename);
if ($stmt->fetch()) {
$stmt->close();
// удаляем запись
$stmt = $mysqli->prepare("DELETE FROM user_photos WHERE id = ? AND user_id = ?");
$stmt->bind_param('ii', $photo_id, $user_id);
$stmt->execute();
$stmt->close();
// удаляем файл
if ($filename) {
$path = __DIR__ . '/assets/img/' . $filename;
if (is_file($path)) {
@unlink($path);
}
}
$success = true;
} else {
$stmt->close();
$errors[] = 'Фото не найдено или не принадлежит вам.';
}
}
// загружаем все фото пользователя
$stmt = $mysqli->prepare("
SELECT id, filename, created_at
FROM user_photos
WHERE user_id = ?
ORDER BY created_at DESC
");
$stmt->bind_param('i', $user_id);
$stmt->execute();
$photos = $stmt->get_result();
$stmt->close();
include 'header.php';
?>
<style>
/* Локальные стили для album.php */
.album-page {
margin-top: 18px;
}
.album-toolbar {
display: flex;
justify-content: space-between;
align-items: center;
gap: 8px;
margin-bottom: 12px;
}
.album-grid-manage {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
gap: 10px;
}
.album-item {
position: relative;
border-radius: 18px;
overflow: hidden;
box-shadow: 0 8px 24px rgba(0,0,0,0.08);
}
.album-item img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
.album-item-form {
position: absolute;
top: 6px;
right: 6px;
}
.album-delete-btn {
border: none;
background: rgba(0,0,0,0.55);
color: #fff;
font-size: 13px;
padding: 4px 7px;
border-radius: 999px;
cursor: pointer;
}
.album-delete-btn:hover {
background: rgba(0,0,0,0.8);
}
.album-date {
position: absolute;
left: 6px;
bottom: 6px;
background: rgba(0,0,0,0.55);
color: #fff;
font-size: 11px;
padding: 3px 7px;
border-radius: 999px;
}
.album-empty-text {
font-size: 14px;
color: #7b7287;
}
@media (max-width: 768px) {
.album-grid-manage {
grid-template-columns: repeat(auto-fit, minmax(90px, 1fr));
}
.album-item {
border-radius: 16px;
}
}
</style>
<div class="album-page">
<div class="album-toolbar">
<h1 style="margin:0;">Мой альбом</h1>
<div style="display:flex;gap:8px;flex-wrap:wrap;">
<a href="profile_edit.php#album" class="btn-outline btn-small">Добавить фото</a>
<a href="profile.php" class="btn-outline btn-small">К профилю</a>
</div>
</div>
<?php if ($success): ?>
<div class="alert alert-success">Фото удалено ✅</div>
<?php endif; ?>
<?php if ($errors): ?>
<div class="alert alert-error">
<?php foreach ($errors as $e): ?>
<p><?= htmlspecialchars($e) ?></p>
<?php endforeach; ?>
</div>
<?php endif; ?>
<?php if ($photos->num_rows === 0): ?>
<p class="album-empty-text">
В альбоме пока нет фотографий. Вы можете добавить их на странице
<a href="profile_edit.php#album">редактирования профиля</a>.
</p>
<?php else: ?>
<div class="album-grid-manage">
<?php while ($p = $photos->fetch_assoc()): ?>
<div class="album-item">
<img src="/assets/img/<?= htmlspecialchars($p['filename']) ?>" alt="">
<form method="post" class="album-item-form"
onsubmit="return confirm('Удалить это фото из альбома?');">
<input type="hidden" name="delete_id" value="<?= (int)$p['id'] ?>">
<button type="submit" class="album-delete-btn">Удалить</button>
</form>
<div class="album-date">
<?= htmlspecialchars(date('d.m.y', strtotime($p['created_at']))) ?>
</div>
</div>
<?php endwhile; ?>
</div>
<?php endif; ?>
</div>
<?php include 'footer.php'; ?>