Cel

Zbudować prosty CMS umożliwiający:
- logowanie administratora,
- dodawanie nowych artykułów,
- edytowanie istniejących artykułów,
- usuwanie artykułów,
- wyświetlanie artykułów dla odwiedzających.
System będzie oparty o:
- Backend: PHP 8
- Frontend: prosty HTML + CSS
- Baza danych: MySQL lub MariaDB
- Hosting: lokalny serwer XAMPP lub hosting WWW
Struktura systemu
- Baza danych:
- tabela
users
(użytkownicy), - tabela
articles
(artykuły).
- tabela
- Pliki PHP:
index.php
– wyświetlanie artykułów użytkownikowi,login.php
– panel logowania administratora,admin.php
– panel administracyjny,add_article.php
– formularz dodawania artykułu,edit_article.php
– edytowanie artykułu,delete_article.php
– usuwanie artykułu,config.php
– plik połączenia z bazą danych,logout.php
– wylogowywanie.
- Katalogi:
/admin/
– pliki administracyjne,/uploads/
– opcjonalny katalog na zdjęcia.
Baza danych – struktura
CREATE DATABASE simple_cms;
USE simple_cms;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL
);
CREATE TABLE articles (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Mechanizmy systemu (logika działania)
Logowanie użytkownika:
- Formularz logowania przesyła dane metodą POST do pliku
login.php
. - Serwer sprawdza dane w bazie (hashowanie haseł np. funkcją
password_hash
ipassword_verify
). - Jeśli dane są poprawne, tworzona jest sesja użytkownika.
Zarządzanie artykułami:
- W panelu administracyjnym (
admin.php
) lista wszystkich artykułów z opcjami „Dodaj”, „Edytuj”, „Usuń”. - Nowe artykuły dodawane przez formularz zapisują dane do tabeli
articles
. - Edytowanie artykułu pobiera dane z bazy, pozwala je zmienić i aktualizuje rekord.
- Usuwanie artykułu kasuje rekord z bazy danych.
Wyświetlanie artykułów:
- Główna strona (
index.php
) pobiera wszystkie artykuły z bazy danych i wyświetla je odwiedzającym.
Najważniejsze funkcje PHP używane w systemie

mysqli_connect
– łączenie z bazą danych,session_start
,$_SESSION
– zarządzanie sesją użytkownika,password_hash
,password_verify
– bezpieczne przechowywanie haseł,mysqli_query
,mysqli_fetch_assoc
– wykonywanie zapytań SQL,- walidacja danych przesyłanych formularzami (np. sprawdzanie pustych pól, filtrowanie inputów).
Funkcje bezpieczeństwa w projekcie
- Wszystkie dane wejściowe użytkownika muszą być walidowane i filtrowane.
- Hasła przechowywane w bazie w formie hasha, nie w postaci jawnej.
- Sesje muszą być chronione przed atakami typu session hijacking (np. poprzez regenerację identyfikatora sesji).
- Formularze powinny mieć tokeny CSRF w bardziej rozbudowanych wersjach.
- Ograniczenie dostępu do panelu administracyjnego tylko dla zalogowanych użytkowników.
Schemat działania systemu (w skrócie)
- Użytkownik odwiedza stronę → Widzi artykuły (
index.php
). - Administrator loguje się do systemu (
login.php
). - Po zalogowaniu przechodzi do panelu (
admin.php
) i może:- dodać nowy artykuł (
add_article.php
), - edytować istniejący (
edit_article.php
), - usunąć nieaktualny (
delete_article.php
).
- dodać nowy artykuł (
- Artykuły są dynamicznie zapisywane i aktualizowane w bazie danych.
- System automatycznie generuje stronę główną na podstawie treści zapisanych w bazie.
Podsumowanie projektu

Taki własny CMS, choć prosty, obejmuje wszystkie podstawowe funkcje potrzebne do zarządzania treścią: autoryzację, zarządzanie danymi oraz dynamiczne generowanie strony.
Oczywiście w bardziej zaawansowanych systemach dochodzą funkcje takie jak edytory wizualne (WYSIWYG), system ról i uprawnień, wersjonowanie treści, integracje API czy rozbudowane opcje SEO.