/
codxplr
/
simple-php-blog
Обзор
Документация
Войти
/
codxplr
/
simple-php-blog
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
index.php
62 строки
3 KB
codxplr
Create: article.php, config.php, editor.php, index.php, init.php, login.php, logout.php, sql_dump.sql, toggle_publish.php
08 авг 2026, 21:23
Верифицирован
08 авг 2026, 21:23
1113d72
Код
Авторство
О чём код?
<?php require 'init.php'; $page = isset($_GET['page']) ? (int)$_GET['page'] : 1; $limit = 10; $offset = ($page - 1) * $limit; $stmt = $pdo->prepare("SELECT id, title, slug, LEFT(content, 400) as snippet, image_path, created_at FROM posts WHERE published = 1 ORDER BY created_at DESC LIMIT :limit OFFSET :off"); $stmt->bindValue(':limit', $limit, PDO::PARAM_INT); $stmt->bindValue(':off', $offset, PDO::PARAM_INT); $stmt->execute(); $posts = $stmt->fetchAll(); // Для пагинации $totalStmt = $pdo->query("SELECT COUNT(*) FROM posts WHERE published = 1"); $totalPosts = $totalStmt->fetchColumn(); $totalPages = ceil($totalPosts / $limit); ?> <!DOCTYPE html> <html lang="ru"> <head><meta charset="UTF-8"><title>Простой блог</title><link rel="stylesheet" href="assets/style.css"></head> <body> <header><h1>Мой простой блог</h1></header> <?php if(is_admin_logged_in()): ?> <div class="admin-panel"> <strong>Админ-панель:</strong> <a href="editor.php" class="btn">Написать статью</a> <form action="toggle_publish.php" method="post" style="display:inline;"> <input type="hidden" name="csrf_token" value="<?= e(csrf_token()) ?>"> <?php $pubStmt = $pdo->prepare("SELECT value FROM settings WHERE name = 'publishing_enabled'"); $pubStmt->execute(); $enabled = $pubStmt->fetchColumn(); ?> <button type="submit" name="state" value="<?= $enabled ? '0' : '1' ?>" class="toggle-btn <?= $enabled ? '' : 'off' ?>"> <?= $enabled ? 'Выключить публикацию' : 'Включить публикацию' ?> </button> </form> <a href="logout.php" class="btn" style="background:#dc3545;">Выйти</a> </div> <?php else: ?> <p style="text-align:right;"><a href="login.php" class="btn">Войти как администратор</a></p> <?php endif; ?> <?php foreach($posts as $post): ?> <article class="post-card"> <?php if($post['image_path']): ?> <img src="<?= e($post['image_path']) ?>" alt="<?= e($post['title']) ?>"> <?php endif; ?> <h2><?= e($post['title']) ?></h2> <div class="post-meta"><?= date('d.m.Y H:i', strtotime($post['created_at'])) ?></div> <p><?= nl2br(e($post['snippet'])) ?>...</p> <a href="article.php?slug=<?= e($post['slug']) ?>" class="btn">Читать далее…</a> </article> <?php endforeach; ?> <div class="pagination"> <?php if($page > 1): ?><a href="?page=<?= $page - 1 ?>">« Назад</a><?php endif; ?> <span>Страница <?= $page ?> из <?= $totalPages ?></span> <?php if($page < $totalPages): ?><a href="?page=<?= $page + 1 ?>">Вперед »</a><?php endif; ?> </div> </body> </html>