/
├── .htaccess # (Опционально) Файл конфигурации для Apache (перенаправления, безопасность и т.д.)
├── index.php # Главный файл, точка входа в приложение
├── config.php # Конфигурационный файл: данные для подключения к базе данных, ключи API и т.д.
├── public # Публичная директория, доступная всем пользователям
│ ├── css # Файлы CSS для стилизации сайта
│ │ └── style.css
│ ├── js # Файлы JavaScript (если используются)
│ │ └── script.js
│ ├── images # Папка с изображениями (логотипы, фотографии и т.д.)
│ │ └── logo.png
│ ├── fonts # Шрифты сайта (если используются)
│ │ └── roboto.woff2
│ └── .htaccess # (Опционально) Конфигурация для публичной директории (блокировка доступа к определенным файлам)
├── admin # Директория для административных функций (доступ только авторизованным пользователям)
│ ├── index.php # Главная страница админ-панели
│ ├── login.php # Страница авторизации
│ ├── logout.php # Страница выхода из системы
│ ├── articles # Управление статьями
│ │ ├── index.php # Список статей (админ)
│ │ ├── create.php # Создание новой статьи
│ │ ├── edit.php # Редактирование статьи
│ │ ├── delete.php # Удаление статьи
│ │ └── view.php # Просмотр статьи (админ)
│ └── users # Управление пользователями (опционально)
│ ├── index.php # Список пользователей
│ └── create.php # Создание пользователя (если нужна регистрация)
├── includes # Вспомогательные файлы и функции, которые не должны быть напрямую доступны извне
│ ├── db_connect.php # Скрипт для подключения к базе данных
│ ├── functions.php # Пользовательские функции
│ ├── auth.php # Функции аутентификации (логика авторизации)
│ └── templates # Фрагменты HTML-кода (шаблоны)
│ ├── header.php
│ ├── footer.php
│ └── article.php
├── vendor # Директория для зависимостей (если используете Composer)
└── README.md # Описание проекта (опционально)
Рекомендации по директориям и файлам:
.htaccess: Крайне полезен для перенаправлений, управления правами доступа, включения mod_rewrite для красивых URL. Важно, чтобы на сервере был настроен Apache или подобный веб-сервер.config.php: НИКОГДА не храните конфиденциальные данные (пароли, ключи API) прямо в коде. Используйте переменные окружения или зашифрованные конфигурационные файлы. Этот файл будет содержать параметры подключения к базе данных MariaDB (имя хоста, имя пользователя, пароль, имя базы данных).public: Все файлы, которые должны быть доступны пользователям, должны находиться в этой директории. В.htaccessв этой директории можно настроить, какие файлы доступны, а какие нет.admin: Эта директория содержит административную панель. Важно, чтобы доступ к этой директории был ограничен авторизованными пользователями. В.htaccessв корневой директории или в директорииadminможно настроить защиту от неавторизованного доступа.includes: Здесь хранятся файлы, которые используются в разных частях сайта, но не должны быть доступны напрямую извне (например, подключение к базе данных, функции для работы с пользователями, шаблоны).vendor: Если используете Composer (рекомендуется), все зависимости будут установлены здесь.README.md: Полезный файл, описывающий проект, его установку и использование.
Важные замечания:
- Безопасность: Обрати особое внимание на безопасность. Не доверяй пользовательскому вводу, используй подготовленные выражения (prepared statements) для работы с базой данных, эскейпируй данные, чтобы избежать SQL-инъекций. Регулярно обновляй зависимости.
- Структура базы данных: Заранее продумай структуру таблиц в базе данных MariaDB.
- Разделение логики: Стремись к разделению логики (например, бизнес-логика должна быть отделена от представления).
- Composer: Использование Composer упрощает управление зависимостями.
Типовой файл index.php
<?php
// Подключение к базе данных
require_once 'includes/db_connect.php';
// Проверка авторизации (если пользователь залогинен)
session_start();
if (isset($_SESSION['user_id'])) {
$user_is_logged_in = true;
} else {
$user_is_logged_in = false;
}
// Подключение шаблонов
include 'includes/templates/header.php';
?>
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Мой сайт</title>
<link rel="stylesheet" href="public/css/style.css">
</head>
<body>
<div class="container">
<h1>Добро пожаловать на мой сайт!</h1>
<?php if ($user_is_logged_in): ?>
<p>Вы авторизованы как <?php echo $_SESSION['username']; ?>. <a href="admin/index.php">Перейти в админ-панель</a> | <a href="includes/auth.php?action=logout">Выйти</a></p>
<?php else: ?>
<p>Вы не авторизованы. <a href="admin/login.php">Войти</a></p>
<?php endif; ?>
<h2>Недавние статьи:</h2>
<?php
// Пример запроса к базе данных (замените на реальный запрос)
$query = "SELECT title, content FROM articles ORDER BY date_created DESC LIMIT 5";
$result = mysqli_query($connection, $query);
if (mysqli_num_rows($result) > 0) {
while ($row = mysqli_fetch_assoc($result)) {
echo "<article>";
echo "<h3>" . htmlspecialchars($row['title']) . "</h3>";
echo "<p>" . htmlspecialchars(substr($row['content'], 0, 200)) . "...</p>"; // Вывод первых 200 символов
echo "</article>";
}
} else {
echo "<p>Статьи не найдены.</p>";
}
?>
</div>
<?php
include 'includes/templates/footer.php';
?>
</body>
</html>
Что делает этот код:
- Подключение к базе данных: Подключает файл
db_connect.php, который содержит параметры подключения к базе данных MariaDB и выполняет соединение. - Проверка авторизации: Проверяет, залогинен ли пользователь, используя сессии.
- Подключение шаблона заголовка: Включает файл
header.php, который, вероятно, содержит HTML для<head>и общую структуру<header>. - HTML-структура: Создает базовую HTML-структуру страницы.
- Вывод приветственного сообщения: Выводит сообщение в зависимости от того, авторизован пользователь или нет. Предоставляет ссылки на админ-панель и форму логина/выхода.
- Пример запроса к базе данных: Демонстрирует, как можно выполнять запросы к базе данных. Важно: Замените этот пример на реальный запрос, который будет извлекать данные о статьях из вашей базы данных. Также обязательно используйте подготовленные выражения для безопасности.
- Вывод списка статей: Выводит список недавних статей (в примере выводится только заголовок и первые 200 символов контента).
- Подключение шаблона подвала: Включает файл
footer.php, который, вероятно, содержит HTML для<footer>.
Что нужно сделать дальше:
db_connect.php: Создай этот файл и заполни его параметрами подключения к базе данных.header.phpиfooter.php: Создай эти файлы и добавь в них необходимый HTML-код для заголовка и подвала сайта.- Замени пример запроса к базе данных: Реализуй реальный запрос для получения данных о статьях. Не забудь про подготовленные выражения!
- Создай таблицу
articles: Создай таблицуarticlesв базе данных MariaDB, если ее еще нет. - Стилизация: Добавь CSS-стили в
public/css/style.css, чтобы сайт выглядел красиво. - Функциональность: Добавь функциональность для создания, редактирования и удаления статей.
Важно: Этот код предоставляет лишь базовый пример. Необходимо адаптировать его к конкретным требованиям вашего проекта. Не забудь про безопасность!