Redakční systém I. - Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Soutěž

Sponzorem soutěže je:

IDIF

 

Kdo je autorem výstavy obrazových fotografií „Očima Hanse Christiana Andersena“?

V dnešní soutěži hrajeme o:



PHP

Redakční systém I.

redakcni system

17. dubna 2001, 00.00 | 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','','Ší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:

<?
$heslo = "vase_heslo";
echo "Heslo: " . md5($heslo);
?>

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
<?
// spojení s databází
@$conn = mysql_connect("localhost","","")
   or die ("Nelze navázat spojení s databazí");
@$sdb = mysql_select_db("rs")
   or die ("Nenalezena databáze");

// email administrátora
$ADMIN_MAIL = "admin@vas_server.cz";

// počet anotací článku na stránce
$CL_PER_PAGE = 10;

// pozice/funkce uživatelů
$pozice = array(1=>"Autor","Redaktor","Šéfredaktor");
?>

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ů.

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » PHP  

 » Rubriky  » Web  

 

 

 

Nejčtenější články
Nejlépe hodnocené články

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: