File size: 4.03Kb
<?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 = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (empty($_FILES['media']['name']) || $_FILES['media']['error'] !== UPLOAD_ERR_OK) {
$errors[] = 'Загрузите фото или видео для истории.';
} else {
$tmp = $_FILES['media']['tmp_name'];
$name = $_FILES['media']['name'];
$type = mime_content_type($tmp);
$allowedImg = ['image/jpeg','image/png','image/gif','image/webp'];
$allowedVid = ['video/mp4','video/webm','video/ogg'];
if (in_array($type, $allowedImg, true)) {
$media_type = 'image';
$ext = pathinfo($name, PATHINFO_EXTENSION);
} elseif (in_array($type, $allowedVid, true)) {
$media_type = 'video';
$ext = pathinfo($name, PATHINFO_EXTENSION);
} else {
$errors[] = 'Недопустимый формат. Поддерживаются JPG/PNG/GIF/WEBP и MP4/WEBM.';
$media_type = null;
}
if (!$errors && $media_type) {
$ext = strtolower($ext);
if ($ext === '') {
$ext = $media_type === 'image' ? 'jpg' : 'mp4';
}
$filename = 'story_' . $user_id . '_' . time() . '_' . mt_rand(1000,9999) . '.' . $ext;
$target = __DIR__ . '/assets/stories/' . $filename;
if (!move_uploaded_file($tmp, $target)) {
$errors[] = 'Не удалось сохранить файл.';
} else {
$caption = trim($_POST['caption'] ?? '');
$stmt = $mysqli->prepare("
INSERT INTO stories (user_id, filename, media_type, caption, expires_at)
VALUES (?, ?, ?, ?, DATE_ADD(NOW(), INTERVAL 1 DAY))
");
$stmt->bind_param('isss', $user_id, $filename, $media_type, $caption);
$stmt->execute();
$stmt->close();
$success = 'История добавлена! Она будет показываться 24 часа.';
}
}
}
}
include 'header.php';
?>
<style>
.story-add-page{margin-top:18px;}
.story-form-card{
background:#fff;
border-radius:22px;
padding:18px 20px;
box-shadow:0 10px 30px rgba(0,0,0,0.06);
max-width:480px;
}
.story-form-row{margin-bottom:12px;}
.story-form-row label{display:block;font-size:13px;margin-bottom:4px;}
.story-form-row input[type="file"],
.story-form-row input[type="text"]{width:100%;}
</style>
<div class="story-add-page">
<h1>Новая история</h1>
<div class="story-form-card">
<?php if ($errors): ?>
<div class="alert alert-error">
<?php foreach ($errors as $e): ?>
<p><?= htmlspecialchars($e) ?></p>
<?php endforeach; ?>
</div>
<?php endif; ?>
<?php if ($success): ?>
<div class="alert alert-success">
<p><?= htmlspecialchars($success) ?></p>
</div>
<?php endif; ?>
<form method="post" enctype="multipart/form-data">
<div class="story-form-row">
<label>Фото или видео</label>
<input type="file" name="media" accept="image/*,video/*" required>
</div>
<div class="story-form-row">
<label>Подпись (необязательно)</label>
<input type="text" name="caption" maxlength="255"
placeholder="Например: Хороший день ☀️">
</div>
<button type="submit" class="btn-primary">Опубликовать историю</button>
</form>
</div>
</div>
<?php include 'footer.php'; ?>