Redakční systém 1.
Publikujte na svých stránkách články či novinky s použitím jednoduchého redakčního systému. V úvodním díle probereme základní funkce a vytvoříme databázi, kterou bude systém využívat.
Mnoho internetových serverů využívá k publikaci článků, novinek, či k publikaci katalogů internetových aplikací, jimž se říká Redakční Systém. Existuje spousta systémů. I když každý plní svůj účel a výsledek je obdobný, každý z těchto systémů jde na věc jinak.
Já bych Vám zde chtěl ukázat základní princip fungování takového RS a ukázat jednoduchý funkční přiklad aplikace, jež bude vytvořena v PHP a bude využívat podpory databáze (MySQL). Náš RS bude umět vkládat, editovat, mazat články a krátké zprávy, bude zvládat tři druhy uživatelů – Autor, redaktor a šéfredaktor. Bude umět tvořit nové uživatele, nové rubriky, u každého článku bude diskusní fórum. RS bude možno používat i bez znalosti HTML tagů.
Jelikož se jedná o relativně rozsáhlý projekt (tím nechci říci, že by byl dokonalý, k dokonalosti mu bude chybět ještě spousta věcí, nicméně bude funkční a použitelný), nebudu uvádět kompletní výpisy zdrojových kódů, ale jen jeho konkrétní části. V závěru seriálu dám k dispozici kompletní zdrojové kódy našeho RS.
Ještě než začneme se samotným psaním PHP kódu si musíme promyslet strukturu databáze. Ta bude relativně rozsáhlá a bude se skládat celkem z pěti tabulek, které si nazveme: clanky, novinky, autori, fora, rubriky. Názvy těchto tabulek již napovídají jaká data budou obsahovat. Uvedu strukturu jednotlivých tabulek:
clanky:
CREATE TABLE clanky (id INT UNSIGNED not null AUTO_INCREMENT, id_autor INT UNSIGNED not null , id_rubrika INT UNSIGNED not null , datum INT UNSIGNED not null , counter INT UNSIGNED DEFAULT '0' not null , priorita SMALLINT UNSIGNED DEFAULT '0' not null , nadpis VARCHAR (255) , anotace TEXT , clanek TEXT , poznamka TEXT , stav CHAR (1) DEFAULT 'n' , PRIMARY KEY (id));
- id – identifikátor článku
- id_autor – id autora článku
- id_rubrika – id rubriky do které článek patří
- datum – unixový čas publikace článku
- counter – počítadlo přístupů (přečtení) článku
- priorita – priorita článku – čím vyšší, tím lepší pořadí v seznamu – v rámci jednoho dne
- nadpis – název/nadpis článku
- anotace – stručný obsah článku zobrazující se v seznamu rubrik
- clanek – text celého článku
- poznamka – interní poznámky ke článku – vzkazy pro redaktory/korektory atp.
- stav – a = schválený článek, jinak je článek neschválen
novinky:
CREATE TABLE novinky (id INT UNSIGNED not null AUTO_INCREMENT, novinka TEXT , datum INT UNSIGNED not null , stav CHAR (1) DEFAULT 'n' not null , PRIMARY KEY (id));
- id – identifikátor novinky
- novinka – text novinky/krátké zprávy
- datum – unixový čas vložení novinky
- stav – a = schválená novinka, jinak je novinka neschválená
autori:
CREATE TABLE autori (id INT UNSIGNED not null AUTO_INCREMENT, login VARCHAR (20) not null , pass CHAR (32) not null , jmeno VARCHAR (255) not null , email VARCHAR (255) not null , oautorivi TEXT not null , prava TINYINT UNSIGNED DEFAULT '1' not null , stav CHAR (1) DEFAULT 'n' not null , PRIMARY KEY (id));
- id – identifikátor autora
- login – login pro přihlášení do systému
- pass – heslo pro přihlášení. Kvůli bezpečnosti bude ukládáno kryptované pomocí funkce MD5()
- jmeno – plné jméno autora
- email – email autora
- oautorovi – krátký popis/informace autora
- prava – 1 = autor, 2 = redaktor/korektor, 3 = šéfredaktor
- stav – a = aktivní, je-li v položce jiná hodnota, autor se nemůže přihlásit a nadále pracovat se systémem
rubriky:
CREATE TABLE rubriky (id INT UNSIGNED not null AUTO_INCREMENT, rubrika VARCHAR (50) not null , PRIMARY KEY (id));
- id – identifikátor rubriky
- rubrika – název rubriky
fora:
CREATE TABLE fora (id INT UNSIGNED not null AUTO_INCREMENT, id_clanku INT UNSIGNED not null , datum INT UNSIGNED not null , jmeno VARCHAR (255) not null , email VARCHAR (255) not null , predmet VARCHAR (255) not null , text TEXT not null , notify CHAR (1) DEFAULT 'n' not null , PRIMARY KEY (id));
- id – identifikátor diskusního příspěvku
- id_clanku – id článku, ke kterému příspěvek patří
- datum – unixový čas vložení příspěvku
- jmeno – jméno přispěvatele
- email – email přispěvatele
- predmet – předmět příspěvku
- text – text příspěvku
- notify – je-li a budou na email přispěvatele docházet emaily s upozorněním na nové příspěvky
Takže strukturu databáze už máme navrženou a můžeme ji vytvořit. Pro naše účely ji nazveme třeba rs – abychom v tom měli pořádek. Abychom později mohli začít pracovat se systémem bude vhodné do tabulky autori vložit jednoho uživatele s právy šéfredaktora pomocí následujícího sql dotazu:
INSERT INTO autori VALUES('','admin','8fa14cdd754f91cc6554c9e71929cce7','Jiří Kocman','email@example.com','Šílenec',3,'a');
V dotazu samozřejmě použijte vlastní údaje. Nezapomeňte, že heslo musí být v databázi uloženo kódovaně. Pro zakódování použijte PHP funkci MD5(). Pro zjištění hesla vám může posloužit následující skriptík:
|
Nyní nezbývá nic jiného než se pustit do psaní samotného RS. Nejdříve si napíšeme skript conn.php, který bude obsahovat funkci pro připojení k databázi a několik proměnných. Skript bude includován do dalších skriptů redakčního systému.
conn.php
|
Pro dnešní, úvodní čast, je to vše. Příště probereme část skriptu, který bude sloužit k zakládání nových autorů a k následné editaci jejich přístupových a osobních údajů.