České vysoké učení technické v Praze Fakulta elektrotechnická. Bakalářská práce. Jan Zikán. Vedoucí práce: Ing. Michal Valenta, Ph.D.



Podobné dokumenty
Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

Úvod do tvorby internetových aplikací

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

Olga Rudikova 2. ročník APIN

Databázové aplikace pro internetové prostředí PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku

DELTA - STŘEDNÍ ŠKOLA INFORMATIKY A EKONOMIE, s.r.o. Obor informační technologie AJAX ESHOP. Maturitní projekt. Třída:

Úvod do aplikací internetu a přehled možností při tvorbě webu

1 Webový server, instalace PHP a MySQL 13

language="javascript">... </script>.

Základní pojmy spojené s webovým publikováním ~ malý slovníček pojmů~ C3231 Základy WWW publikování Radka Svobodová, Stanislav Geidl

1. Webový server, instalace PHP a MySQL 13

Instalace a konfigurace web serveru. WA1 Martin Klíma

MBI - technologická realizace modelu

INFORMAČNÍ SYSTÉMY NA WEBU

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

Programovací jazyky Přehled a vývoj

Základy WWW publikování

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

CZ.1.07/1.5.00/

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

FAKULTA INFORMAČNÍCH TECHNOLOGIÍ SPOLEČNOST DECADIC PROJEKT FRAMETRIX

Specifikace požadavků. POHODA Web Interface. Verze 1.0. Datum: Autor: Ondřej Šrámek

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

APLIKACE XML PRO INTERNET

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN

STŘEDNÍ ŠKOLA INFORMAČNÍCH TECHNOLOGIÍ A SOCIÁLNÍ PÉČE

Technická specifikace

Systém elektronického rádce v životních situacích portálu

DUM č. 11 v sadě. 36. Inf-12 Počítačové sítě

IB111 Programování a algoritmizace. Programovací jazyky

Redakční systém Joomla. Prokop Zelený

ROZHRANÍ PRO ZPŘÍSTUPNĚNÍ A PREZENTACI ZNALOSTNÍ DATABÁZE INTERPI UŽIVATELSKÁ PŘÍRUČKA

1. Úvod do Ajaxu 11. Jak Ajax funguje? 13

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320

Kurz je rozdělen do čtyř bloků, které je možné absolvovat i samostatně. Podmínkou pro vstup do kurzu je znalost problematiky kurzů předešlých.

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Uspořádání klient-server. Standardy pro Web

Registrační číslo projektu: Škola adresa:

Bioadresář. Specifikace požadavků. Verze Datum Projektový tým Bc. Martin Ventruba Bc. Ondřej Veselý Bc. Stratos Zerdaloglu

Vytvoření portálu odboru strukturálních fondů Ministerstva vnitra a zajištění jeho hostingu na serveru dodavatele

Internet 2 css, skriptování, dynamické prvky

Na vybraném serveru vytvoříme MySQL databázi. Soubory scratch.jpa, kickstart.php a en-gb.kickstart.ini nahrajeme na vybraný server.

PRVNÍ ELASTICKÝ INFORMAČNÍ SYSTÉM : QI

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320 M A T U R I T N Í T É M A T A P Ř E D M Ě T U

Název: On-line tvorba webu Anotace:

Systém JSR představuje kompletní řešení pro webové stránky malého a středního rozsahu.

SRSW4IT Inventarizační SW. Prezentace aplikace. Vedoucí DP: ing. Lukáš Macura Autor: Bc. Petr Mrůzek

Business Intelligence

Matematika v programovacích

(X)HTML a CSS. VOŠ a SŠT Česká Třebová

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

Vývoj moderních technologií při vyhledávání. Patrik Plachý SEFIRA spol. s.r.o.

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA FAKULTA STROJNÍ DATABÁZOVÉ SYSTÉMY ARCHITEKTURA DATABÁZOVÝCH SYSTÉMŮ. Ing. Lukáš OTTE, Ph.D.

Nové přístupy tvorby web site. Doc. Ing. Zdeněk Havlíček, CSc. KIT PEF CZU - 13/11/2001

Tvorba webu. Úvod a základní principy. Martin Urza

Inovace výuky prostřednictvím šablon pro SŠ

Publikování map na webu - WMS

Webové rozhraní pro datové úložiště. Obhajoba bakalářské práce Radek Šipka, jaro 2009

E-learningovýsystém Moodle

Internet Information Services (IIS) 6.0

INOVACE PŘEDMĚTŮ ICT. MODUL 11: PROGRAMOVÁNÍ WEBOVÝCH APLIKLACÍ Metodika

Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace. Maturitní otázky z předmětu INFORMATIKA A VÝPOČETNÍ TECHNIKA

Nastavení provozního prostředí webového prohlížeče pro aplikaci

UŽIVATELSKÁ PŘÍRUČKA K INTERNETOVÉ VERZI REGISTRU SČÍTACÍCH OBVODŮ A BUDOV (irso 4.x) VERZE 1.0

SEO OPTIMALIZACE PRO VYHLEDÁVAČE JEDNODUŠE

Maturitní projekt do IVT Pavel Doleček

Informační systém pro e-learning manuál

MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ

Požadavky pro výběrová řízení TerraBus ESB/G2x

Semináˇr Java X J2EE Semináˇr Java X p.1/23

Maturitní témata Školní rok: 2015/2016

Nové jazykové brány do Caché. Daniel Kutáč

Formy komunikace s knihovnami

Microsoft SharePoint Portal Server Zvýšená týmová produktivita a úspora času při správě dokumentů ve společnosti Makro Cash & Carry ČR

KAPITOLA 2 - ZÁKLADNÍ POJMY INFORMAČNÍCH A KOMUNIKAČNÍCH TECHNOLOGIÍ

Systémy pro tvorbu digitálních knihoven

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Aplikace je program určený pro uživatele. Aplikaci je možné rozdělit na části:

Webová stránka. Matěj Klenka

HTML XHTML JavaScript PHP ASP.Net Zajímavé odkazy

Obsah. 1) Rozšířené zadání 2) Teorie zásuvných modulů a) Druhy aplikací používajících zásuvné moduly b) Knihovny c) Architektura aplikace d) Výhody

Obsah. Rozdíly mezi systémy Joomla 1.0 a Systém Joomla coby jednička online komunity...16 Shrnutí...16

Elektronická podpora výuky předmětu Komprese dat

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

MODERNÍ WEB SNADNO A RYCHLE

3 MOŽNÉ PŘÍSTUPY K TVORBĚ APLIKACÍ NAD SVG DOKUMENTY

Jádrem systému je modul GSFrameWork, který je poskytovatelem zejména těchto služeb:

Návrh stránek 4IZ228 tvorba webových stránek a aplikací

Platební systém XPAY [

Web. Získání informace z internetu Grafické zobrazení dat a jejich struktura Rozšíření funkcí pomocí serveru Rozšíření funkcí pomocí prohlížeče

Vstupní požadavky, doporučení a metodické pokyny

Měření teploty, tlaku a vlhkosti vzduchu s přenosem dat přes internet a zobrazování na WEB stránce

Novinky. Autodesk Vault helpdesk.graitec.cz,

Vzdělávací obsah vyučovacího předmětu

Uživatelská dokumentace

Transkript:

České vysoké učení technické v Praze Fakulta elektrotechnická Bakalářská práce Specializovaný redakční systém pro ekonomický portál Jan Zikán Vedoucí práce: Ing. Michal Valenta, Ph.D. Studijní program: Informatika a výpočetní technika červenec 2006

ii

Poděkování Rád bych tou to cestou poděkoval Janu Fialovi, autorovi skvělého freeware editoru PSPad, který se pro mě stal nenahraditelným nástrojem při vytváření webových stránek. iii

iv

Prohlášení Prohlašuji, že jsem svou bakalářskou práci vypracoval samostatně a použil jsem pouze podklady uvedené v přiloženém seznamu. Nemám závažný důvod proti užití tohoto školního díla ve smyslu 60 Zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon). V Praze dne 18.6.2006.. v

vi

Abstract This work represents results of creation of content management system for specialized economic portal, which also includes discussion forum. Abstrakt Tato práce prezentuje výsledky tvorby redakčního systému pro specializovaný ekonomický portál, který taktéž zahrnuje diskusní fórum. vii

viii

Obsah Seznam obrázků...xi Seznam tabulek...xiii 1. Úvod... 1 2. Popis problému... 1 2.1 Vymezení cílů... 1 2.1.1 Využitelnost... 1 2.1.2 Rozšiřitelnost... 1 2.1.3 Vzhled a design... 1 2.1.4 Přístupnost... 2 2.1.5 Zabezpečení... 2 2.1.6 Další hlediska... 2 2.1.7 Konkrétní požadavky na funkce systému... 3 2.2 Struktura systému... 3 2.2.1 HTML... 3 2.2.2 HTTP... 3 2.2.3 Webový server... 4 2.2.4 Komunikace mezi klientem a serverem... 4 2.2.5 Dynamické vytváření stránek... 4 2.2.6 Datová vrstva serveru... 4 2.2.7 Souhrn... 5 2.3 Existující implementace... 5 2.3.1 Joomla... 6 2.3.2 PHP-Nuke... 6 2.3.3 phprs... 7 2.3.4 Konečné zhodnocení... 7 3. Analýza... 8 3.1 Možnosti systému... 9 3.1.1 Uživatelské role... 9 3.2 Datový model... 10 3.3 Jazyk pro tvorbu dynamických stránek... 10 3.3.1 CGI skripty... 10 3.3.2 ASP... 11 3.3.3 PHP... 11 3.4 Webový server... 12 3.4.1 IIS... 13 3.4.2 Apache... 13 3.5 Databáze... 13 3.5.1 Oracle... 14 3.5.2 Microsoft SQL Server... 14 3.5.3 Microsoft Access... 14 3.5.4 PostgreSQL... 14 3.5.5 MySQL... 14 3.5.6 Zhodnocení... 15 3.6 Skriptovací jazyk na klientské straně... 16 3.7 Formát generovaných dokumentů a definice vzhledu... 16 3.7.1 XML... 17 ix

3.7.2 XHTML...17 3.7.3 CSS...17 3.7.4 DHTML...18 3.8 Kódování...19 3.8.1 Znaková sada...19 3.8.2 Unicode...19 3.8.3 UTF-8...19 4. Návrh řešení...20 4.1 Struktura databáze...20 4.2 Struktura systému...21 4.3 Navigace...21 4.3.1 Cookies...21 4.3.2 Přenos informací jako parametry v URL...22 4.3.3 Sessions...22 4.4 Tvorba formulářů...22 5. Realizace...23 5.1 Zabezpečení...24 5.1.1 Speciální znaky...24 5.1.2 SQL injection...24 5.1.3 Vícenásobné odeslání formuláře...25 5.1.4 Komentářový spam...25 6. Testování...26 7. Závěr...27 8. Seznam literatury...29 A Seznam použitých zkratek...31 B Relační model databáze...32 C Instalační příručka...33 D Uživatelská příručka...34 E Obsah přiloženého CD...41 x

Seznam obrázků Obr. 2.2.1 Průběh komunikace mezi prohlížečem a WWW serverem... 4 Obr. 2.2.2 Architektura dynamického webu... 5 Obr. 3.7.1 Druhy jazyků HTML a XHTML... 17 Obr. 3.7.2 DHTML použité technologie... 18 Příloha Obr. 1 Relační model databáze... 32 Příloha Obr. 2 Hlavní stránka redakčního systému uživatel nepřihlášen... 34 Příloha Obr. 3 Hlavní stránka redakčního systému uživatel přihlášen... 35 Příloha Obr. 4 Výpis článků autora... 35 Příloha Obr. 5 Zobrazení článku... 36 Příloha Obr. 6 Vložení článku do redakčního systému... 36 Příloha Obr. 7 Hlavní stránka diskusního fóra uživatel přihlášen... 37 Příloha Obr. 8 Výpis podkategorií a témat zvolené kategorie... 37 Příloha Obr. 9 Výpis příspěvků... 38 Příloha Obr. 10 Profil uživatele... 38 Příloha Obr. 11 Vložení příspěvku... 39 Příloha Obr. 12 Registrace uživatele... 39 Příloha Obr. 13 Nastavení přístupového hesla... 40 Příloha Obr. 14 Nastavení osobních údajů uživatele... 40 xi

xii

Seznam tabulek Tabulka 3.1.1 Přehled uživatelských rolí a přidělených práv... 9 xiii

1. Úvod Cílem mé bakalářské práce bylo vytvořit redakční systém pro specializovaný ekonomický portál, jehož součástí je také diskusní fórum. Po důkladném zvážení úkolu jsem se rozhodl pro obecnější řešení - vytvoření komplexního systému, jehož specializace by byla dána jeho obsahem a specifické funkce, dle konkrétních požadavků, by do něj byly přidávány formou modulů. Implementace systému bude prvotně využita pro prezentaci informací a článků z oblasti ekonomie. 2. Popis problému 2.1 Vymezení cílů K cílům práce jsem přistupoval z několika hledisek: Využitelnost Rozšiřitelnost Vzhled a design Přístupnost Zabezpečení Další hlediska Konkrétní požadavky 2.1.1 Využitelnost Redakční systém a přidružené diskusní fórum by měli vytvářet celistvý systém, který by mohl být využit na různých portálech se specifickým zaměřením. O obsah webového portálu by se měli starat samotní uživatelé, kteří budou rozčleněni do hierarchie dle přidělených práv pro práci se systémem a jeho částmi. Z hlediska možného využití systému na cizojazyčných či vícejazyčných portálech by měl systém umožnit zobrazení dat v různých jazycích ve správném nezkresleném tvaru. 2.1.2 Rozšiřitelnost Vzhledem k zamýšlené obecnosti a využitelnosti systému na portálech s různým zaměřením by měl být systém navržen tak, aby mohl dle požadavků a záměrů provozovatelů portálů být případně doplněn o další funkce, které v něm nejsou obsaženy. 2.1.3 Vzhled a design Každý provozovatel webových stránek má jinou představu o jejich vzhledu a designu. Vzhledem je myšlena třeba barevná skladba stránek, použité druhy písma, zarovnání, ale i rozložení jednotlivých elementů stránek prostě vše co nespadá do obsahu. Z tohoto důvodu by měl být výsledný systém koncipován tak, aby byl obsah stránek důsledně oddělen od jejich formy. Tak bude možné měnit vzhled stránek dle představ provozovatele, aniž by byl ovlivněn obsah. Změna vzhledu stránek, ať už nepatrná či razantní by měla být snadno proveditelná. Vzhledem k plánované využitelnosti systému na portálech s různým zaměřením, nabývá možnost snadné modifikace designu stránek ještě většího významu. 1

2.1.4 Přístupnost Webové stránky by měly být vytvářeny s úmyslem, že spolu s kvalitním obsahem se bude jejich návštěvnost pravděpodobně zvyšovat. Mnohé internetové portály získávají své finanční prostředky zobrazováním reklam, a proto je vysoká návštěvnost jejich prioritou. Za kvalitní obsah, který by měl návštěvníky přilákat, mnohdy provozovatelé platí nemalé peníze. Velký důraz by při vytváření systému měl být kladen na zpřístupnění obsahu co největšímu počtu lidí. Při prohlížení obsahu webových stránek by neměli být jejich návštěvníci nijak znevýhodňováni ať už z hlediska softwaru, který k zobrazení stránek používají (Internet Explorer, FireFox apod.), platformy na které si stránky prohlížejí nebo z hlediska jiných specifických potřeb. Znevýhodněni by neměli být návštěvníci při přístupu k informačnímu obsahu portálu ani rychlostí svého připojení k internetu. Čím širšímu okruhu lidí stránky zpřístupníme a poskytneme jim při prohlížení jejich obsahu určitý komfort, tím více lidí se bude na naše stránky vracet. Komfort při prohlížení stránek představuje především možnost rychlého nalezení informací, které návštěvník hledá, s čímž souvisí snadná navigace a orientace v systému, ale i možnost přizpůsobit si vzhled stránek tak, aby návštěvníkovi co nejvíce vyhovoval (např. zvětšení písma pro slabozraké), aniž by byl narušen layout stránek rozložení elementů stránky. Je zřejmé, že není možné se při vytváření stránek zavděčit všem. Je proto nutné zvolit správnou rovnováhu mezi vzhledem stránek a jejich přístupností co možná největšímu počtu návštěvníků. S přístupností webových stránek souvisí také jejich validita tzn. dodržení standardů. Psaní validního kódu nám poskytuje záruku, že se stránky zobrazí správně ve všech prohlížečích vyhovujících webovým standardům. Vytvořený systém by měl z hlediska přístupnosti podporovat: Správné zobrazení stránek v nejpoužívanějších prohlížečích Internet Explorer, FireFox (prohlížeče pracující na jádře Gecko), Opera validita stránek Snadnou navigaci v systému stránek Rychlost načítání stránek Variabilitu zobrazení stránek bez narušení designu 2.1.5 Zabezpečení Zabezpečení redakčního systému a diskusního fóra proti útokům z vnějšku by mělo být jedním z důležitých cílů této práce, přičemž běžný uživatel přistupující k obsahu stránek, by si neměl bezpečnostních mechanismů ani všimnout. Zabezpečení by mělo zahrnovat kontrolu vstupních údajů vkládaných do systému, přidělení práv pro práci se systémem a jeho částmi. Důležitým bezpečnostním prvkem by měla být ochrana proti spamu nevyžádanému masově šířenému sdělení. 2.1.6 Další hlediska Do této kategorie cílů práce bych zahrnul systematickou snahu o zvýšení návštěvnosti daného portálu pomocí SEO (Search Engine Optimalization) prostředků optimalizace pro vyhledávače. 2

Pokud dosud neznámý webový portál nevynakládá prostředky k informování veřejnosti o své existenci (pomocí reklamy), je jen malá šance, že se potencionální návštěvník o daném portálu dozví. Jednou z možností jak může člověk dané stránky nalézt, je výsledek hledání klíčového slova či fráze vyhledávačem webových stránek, přičemž stránky vyhovující hledané frázi jsou řazeny sestupně dle určitého hodnocení (page ranking), které je dáno vnitřním algoritmem vyhledávače. Tento algoritmus se pro jednotlivé vyhledávače liší, ale v zásadě bere v potaz spjatost stránky s hledanou frází či slovem, důvěryhodnost obsahu stránek a jejich atraktivitu pro vyhledávač. Techniky pro zvýšení hodnocení stránek vyhledávačem se souhrnně nazývají SEO a jejich podstatou je správné strukturování dokumentů a odstranění nepodstatných částí kódu. 2.1.7 Konkrétní požadavky na funkce systému Systém by měl umožňovat: Diferencovaný přístup uživatelů do systému pomocí uživatelského jména a hesla Udělení různých práv uživatelům pro práci se systémem vytvoření hierarchie dle přidělených práv Registraci nových uživatelů Vkládání článků a komentářů do redakčního systému Vkládání příspěvků do diskusního fóra 2.2 Struktura systému Při vytváření redakčního systému je důležité vzít v potaz, že je aplikován na portály, jejichž obsah je často aktualizován a časem se rozrůstá. Takový systém nemůže být tvořen statickými stránkami, protože při každé změně obsahu by bylo nutné přepsat jejich zdrojový kód. Systém, jehož obsah je proměnlivý v čase musí být interaktivní a tedy pružně reagovat na požadavky uživatelů. Abych mohl lépe definovat strukturu systému a proces, kterým jsou stránky dynamicky vytvářeny, měl bych předtím přistoupit k vysvětlení několika pojmů. 2.2.1 HTML Jazyk HTML (Hypertext Markup Language) byl prvním jazykem pro vytváření stránek, který se vyvinul z univerzálního jazyka SGML (Standard Generalized Markup Language). Vývoj jazyka HTML byl ovlivněn vývojem webových prohlížečů. Dnes existuje ve verzi 4.01, ale postupně je nahrazován novějším jazykem XHTML (Extensive Hypertext Markup Language), který klade důraz na oddělení obsahu stránek od jejich formy. 2.2.2 HTTP Protokol HTTP (Hypertext Transfer Protocol) byl původně určen pro přenos hypertextových dokumentů ve formátu HTML, ale v současné době s ním lze přenášet jakýkoli soubor. Ke specifikaci jednoznačného umístění dokumentů na internetu využívá jednotného lokátoru zdrojů URL (Uniform Resource Locator) řetězec znaků s definovanou strukturou. URL definuje doménovou adresu serveru, umístění dokumentu na serveru, protokol pro přístup k souboru a parametry. 3

2.2.3 Webový server Webový server nebo také WWW server je počítač nebo počítačový program, který vyřizuje požadavky ve formě HTTP ze strany klienta. Vyřízením požadavku se rozumí odeslání požadovaných dat (např. dokumentu HTML) klientovi (prohlížeči). 2.2.4 Komunikace mezi klientem a serverem Protokol HTTP funguje na bázi dotaz-odpověď. Uživatel pomocí internetového prohlížeče (klientská strana) zašle serveru dotaz jako čistý text, který obsahuje označení požadovaného dokumentu ve formě URL, informace o prohlížeči apod. Server následně odpoví pomocí několika řádků textu popisujících výsledek dotazu (zda se dokument podařilo najít, typ dokumentu), za kterými následují samotná data požadovaného dokumentu (např. dokument HTML). Obr. 2.2.1 Průběh komunikace mezi prohlížečem a WWW serverem 2.2.5 Dynamické vytváření stránek Stránka ve formátu (X)HTML je soubor uložený na disku WWW serveru. Takto předem připravené stránky nazýváme statickým obsahem serveru a klientovi jsou poskytnuty beze změny. Každá stránka má své unikátní URL. Je však možné aby URL odkazovalo na skript, kterým může být výsledná stránka dynamicky generována. Skript je zpracován na straně serveru a klientovi (prohlížeči) je poskytnut výsledný dokument (X)HTML, který může obsahovat aktuální informace (dynamický obsah). K dynamickému vytváření obsahu se používá řada technologií, kterým se budu věnovat v analytické části při výběru implementačních prostředků. Statický obsah je server klientovi schopen poskytnout výrazně rychleji než dynamický. Pomocí dynamického obsahu je však možné pružně poskytovat větší množství informací dle daných požadavků. 2.2.6 Datová vrstva serveru Informační obsah systému a informace o uživatelích a jejich nastavení jsou u dynamicky vytvářených stránek uloženy v datové vrstvě serveru. Data mohou být jednoduše uložena v souborech, ale v dnešní době se pro ukládání dat a práci s nimi nejčastěji využívá databází pracujících na databázových serverech, které poskytují řadu výhod, mezi něž patří snadné zabezpečení dat a přidělení práv pro manipulaci s nimi. Při práci s daty uloženými v souborech je nutné řešit problém kolizí, které mohou nastat při vícenásobném přístupu k souborům (při zápisu). Databáze zajišťuje atomicitu transakcí (souboru operací) automaticky, což znamená že daná činnost se provede najednou a nemůže být přerušena a dokončena později. Transakce A může nastat před transakcí B nebo až po ní, ale nemohou probíhat současně. Ve skutečnosti transakce současně probíhají, ale synchronizace provedená databázovým serverem zajišťuje, že 4

databáze bude vypadat, jako kdyby transakce proběhly postupně. Pokud není soubor operací možné provést, provede databáze rollback návrat do původního stavu před provedením transakce. Velkou výhodou relačních databází (databázových systémů založených na relačním modelu dat a relační algebře) je dotazovací jazyk SQL (Structured Query Language). Problematika relačních databází a jazyka SQL je velice dobře popsána ve skriptech pro předmět Databázové systémy [3]. 2.2.7 Souhrn Obr. 2.2.2 Architektura dynamického webu Základem redakčního systému a diskusního fóra je soubor technických prostředků na straně serveru - databáze obsahující samotný obsah systému a skripty, které z těchto dat automaticky generují stránky ve formátu (X)HTML s daným obsahem, dle požadavků uživatelů. Z hlediska zmenšení zatížení webového serveru jsou součástí systému i skripty na klientské straně, které řeší požadavky uživatelů aniž by je zasílali serveru. Tyto skripty nemohou přistupovat k datům uloženým v databázi. Mohou ale kupříkladu kontrolovat správnost vstupních údajů od uživatelů, před jejich vložením do databáze. Realizací projektu spočívajícího ve spolupráci s databází, skripty automaticky generujícími stránky dle požadavků uživatelů na straně serveru a skripty kontrolujícími vstupní data před jejich odesláním serveru získáme obecně použitelný systém, který může být využit na různých portálech a zároveň splňuje naše vytyčené cíle. 2.3 Existující implementace Pro každý větší portál, jehož obsah je často aktualizován, je redakční systém dobrým a elegantním řešením. Při změně obsahu stránek se jejich provozovatel nemusí starat o úpravu jejich zdrojového kódu. Jeho jedinou starostí pak tedy zůstává obstarávání kvalitního obsahu, který by návštěvníkům poskytnul. Vytvoření redakčního systému pro daný portál může být velice nákladná záležitost. Existuje však množství již hotových řešení, které může provozovatel pro své potřeby 5

využít zdarma. Nabízená řešení se velmi liší svou kvalitou a množstvím poskytovaných funkcí. Rád bych se zde zmínil o nejpoužívanějších a nejlépe hodnocených redakčních systémech, které jsou v dnešní době využívány. Zaměřil jsem se především na systémy šířené pod OSS (open-source software) licencí, což znamená, že je daný systém nejen dostupný zdarma, ale jeho zdrojové kódy je možno i prohlížet a upravovat. 2.3.1 Joomla Jedná se o velice rozšířený CMS (content management system) redakční systém, který díky svým kvalitám už po světě získal řadu ocenění. Systém je napsán v jazyce PHP (PHP Hypertext Preprocesor) a využívá databázi MySQL. Systém Joomla je v dnešní době k dispozici ve verzi 1.0.1.0, ale dle vývojového plánu by verze 2.0 měla být kompletně přepsána do jazyka PHP 5. Joomla je komplexní systém, který nabízí množství funkcí. S jeho pomocí lze vytvářet jednoduché dynamické stránky, ale i rozsáhlé portály. Jeho dalšími výhodami jsou: Snadná instalace Práce se systémem nevyžadující znalost jazyků pro vytváření webových stránek Flexibilita Elegantní design Možnost rozšíření o další funkce Ačkoliv se jedná o velice vydařený redakční systém, může jeho množství různých nastavení a funkcí některé uživatele odradit. Velké množství funkcí, které jsou v systému dostupné také určitě nevyužije každý. Autoři na domovských stránkách tohoto produktu inzerují jednoduchost změny vzhledu stránek a jejich layoutu, avšak není to tak úplně pravda. Vzhled stránek je zčásti tvořen pomocí tabulek v kódu stránek, takže při snaze o razantnější změnu vzhledu je nutné zasáhnout do zdrojového kódu, což vyžaduje určitou znalost XHTML, v němž jsou stránky napsány. Podmínkou správné funkčnosti systému je zapnutý JavaScript na klientské straně. Dalo by se říci, že tato výtka je spíše malicherná, protože většina moderních prohlížečů má JavaScript implicitně zapnutý, bez jeho zapnutí je však systém téměř nefunkční a neovladatelný. Výše vyjmenované nedostatky redakčního systému Joomla jsou spíše vadami na kráse, které však mohou provozovatele portálu při výběru systému ovlivnit. 2.3.2 PHP-Nuke Redakční systém PHP-Nuke je koncipován jako modulární a snadno rozšiřitelný. Již ve své základní konfiguraci obsahuje množství modulů, které obstarávají rozmanité funkce. Ke svému provozu vyžaduje databázi SQL (doporučována je MySQL, na které byl systém testován), webový server Apache a programovací jazyk PHP verze 4.x, které jsou na internetu volně dostupné. Systém je lokalizován do více než 20 jazyků, mezi nimiž bohužel není čeština. Na českých portálech je však hojně využívaný systém UNITED-NUKE, který je z tohoto redakčního systému odvozen a který českou lokalizaci obsahuje. Kolem této modifikace původního systému se u nás vytvořila široká komunita uživatelů, která pro ní vytváří další funkce ve formě modulů. 6

Systém PHP-Nuke trpí neduhem mnoha redakčních systémů a tím je zastaralý způsob vytvoření vzhledu a rozložení prvků stránek pomocí tabulek. Změna vzhledu pak vyžaduje zásah do zdrojového kódu, který je v tomto případě napsán v HTML 4.01 a vyžaduje od uživatele již určité znalosti. Vzhled stránek také není vytvořen variabilně pro možnost jeho úpravy ze strany návštěvníka např. při změně velikosti písma či změně rozlišení obrazovky se čitelnost obsahu stránek rapidně sníží. Stránky generované PHP ve většině případů obsahují syntaktické ale i sémantické chyby, které, ačkoliv nezpůsobují funkční problémy systému, mohou vést k chybnému zobrazení stránek v různých prohlížečích, jež chybný kód interpretují různým způsobem. Stránky byly testovány validátorem zdrojového kódu mezinárodního konsorcia W3C [1], jehož členové vyvíjejí webové standardy. 2.3.3 phprs Redakční a informační systém phprs je oproti předchozím dvěma systémům ryze českým produktem a mezi českými uživateli je velice oblíben. Stejně jako výše zmiňované systémy využívá skriptovacího jazyka PHP a databáze MySQL. Mezi hlavní rysy systému dle jeho autora patří: Správa uživatelů rozlišení mezi různými typy uživatelů a jejich přístupovými právy k systému Vzhled vytvářený pomocí šablon (bez nutnosti zasahovat do samotného kódu systému). Šablony lze mezi sebou kombinovat Rozšiřitelnost ve formě modulů a pluginů Sledování statistik návštěvnosti Reklamní management pro správu reklam Interní zálohovací subsystém umožňující zálohovat celou databázi Je patrné, že tento systém oproti předchozím dvěma nenabízí téměř žádnou novou funkcionalitu. Důvodem jeho obliby mezi českými uživateli je především vstřícný přístup komunity podporující projekt, která kromě vytváření dalších rozšíření ve formě modulů také publikuje množství informací a rad, jak systém přizpůsobit specifickým požadavkům. Velkou výhodou může být pro mnohé uživatele, kteří chtějí systému nahlédnout pod kůži, srozumitelný kód s komentáři. Šablony pro vytváření vzhledu definují layout stránek stejně jako předchozí systémy pomocí tabulek v kódu stránek, čímž brání snadné modifikaci, ačkoli autoři ve svých záměrech tvrdí opak. Podobně jako u předchozího redakčního systému PHP-Nuke ani zde není kód výstupních stránek validní, čímž nezaručuje správné zobrazení stránek ve všech prohlížečích. 2.3.4 Konečné zhodnocení Volně dostupných redakčních systémů existuje celá řada, většina z nich je však určena pro méně rozsáhlé webové stránky nebo blogy (web logy webové deníky). Výchozím bodem pro výběr správné alternativy redakčního systému pro specifické účely může být 7

stránka OpenSourceCMS [2], kde lze nalézt množství informací, odkazů a hodnocení uživatelů. Mezi nejčastější nevýhody nabízených systémů patří již zmiňovaná tvorba vzhledu pomocí tabulkových layoutů a nevalidita výsledného kódu. Většina nabízených řešení také nepočítá s aplikací pro vícejazyčné portály, na kterých mohou být použity různé znakové sady. Z hlediska mé práce téměř žádné řešení nenabízelo redakční systém spolu s diskusním fórem. Systémů vytvořených speciálně pro tvorbu diskusních fór je také mnoho (např. systém phpbb), ale bylo by pak zapotřebí využití více různých systémů, které by bylo třeba sjednotit. Množství systémů pro tvorbu diskusních fór lze najít na zmiňované stránce OpenSourceCMS [2]. 3. Analýza V předchozí kapitole jsme si stanovili strukturu systému, které by se měla skládat ze dvou částí. Část na straně serveru obstarává dynamické generování stránek na základě požadavků klientů z dat uložených v datové vrstvě serveru tvořené databází. Druhá část systému na straně klienta by měla řešit požadavky klienta bez jejich odeslání serveru ke zpracování, což je mnohem rychlejší, ale skripty na klientské straně nemohou přistupovat k datům v datové vrstvě serveru. Před vlastní tvorbou projektu si musíme určit možnosti a schopnosti systému a vybrat konkrétní implementační prostředky, které pro vytvoření redakčního systému a přidruženého diskusního fóra použijeme. Z implementačních prostředků je třeba si zvolit: Skriptovací jazyk pro dynamické vytváření stránek a práci s daty Databázový server, který tvoří datovou vrstvu systému Webový server na kterém celý systém poběží a jehož vlastností může systém využívat Jazyk pro zpracování požadavků na klientské straně Formát výsledných dynamicky vytvářených dokumentů a způsob jakým v nich bude definován vzhled a design Jedním z hlavních cílů práce byla využitelnost vytvořeného projektu i pro jiné portály se specifickým zaměřením. Aby se provozovatel webových stránek nemusel starat o záležitosti spojené s provozem serveru (vytíženost a možné výpadky), byl systém vytvářen s úmyslem umístění na serveru provozovaném třetí stranou. Třetí stranou zde rozumíme placené hostingové nebo free-hostingové služby, které poskytují prostor pro uložení obsahu dostupného přes internet na svých serverech za úplatu či zdarma. Hostingové služby zároveň poskytují garance zabezpečení proti možné ztrátě dat při výpadcích serveru. Množství a kvalita služeb poskytovaných hostingovými servery se velmi liší. Používaný webový server a platforma (operační systém) na které je server provozován určují, jaké prostředky k vytváření dynamických stránek může uživatel využít. Při výběru implementačních prostředků jsem dbal na to, aby bylo systém možno provozovat na co největším počtu hostingových a free-hostingových serverů, ale aby bylo možné systém provozovat bez velkých nákladů i na vlastním stroji. 8

3.1 Možnosti systému Před samotnou realizací projektu je nutné si ujasnit, jaké schopnosti má implementovaný systém mít a jaké funkce má uživatelům poskytovat od toho se odvíjí i datový model systému. Projekt zahrnuje redakční systém pro vkládání článků s možností reakce na daný článek formou komentáře a diskusní fórum s možností vkládání příspěvků do konkrétních diskusních témat. 3.1.1 Uživatelské role Důležitou vlastností systému je diferencovaný přístup uživatelů k systému a možnost manipulace s jeho obsahem dle přidělených práv. Pro tyto účely si definujeme uživatelské role: Návštěvník neregistrovaný uživatel systému, který může číst obsah systému (články v redakčním systému a příspěvky v diskusním fóru), ale nemůže s ním manipulovat (může pouze vkládat komentáře ke článkům) Čtenář registrovaný uživatel systému. V rámci redakčního systému má stejná práva jako návštěvník, navíc ale může přispívat do diskusního fóra Redaktor registrovaný uživatel systému, který se může aktivně podílet na tvorbě obsahu systému vkládáním článků do redakčního systému. V rámci diskusního fóra má stejná práva jako čtenář. Moderátor registrovaný uživatel systému, který se stará o správu diskusního fóra. Administrátor registrovaný uživatel systému. Spravuje veškerý obsah systému. Má veškerá práva výše uvedených uživatelských rolí a může ostatním uživatelům práva přidělovat. Uživatelská role Redakční systém Diskusní fórum Návštěvník - prohlíží články - prohlíží příspěvky - vkládá komentáře ke článkům Čtenář - prohlíží články - prohlíží příspěvky - vkládá komentáře ke článkům - vytváří příspěvky - upravuje své příspěvky - maže své příspěvky Redaktor - prohlíží články - prohlíží příspěvky - vkládá články - vytváří příspěvky - edituje své články (*) - upravuje své příspěvky - vkládá komentáře ke článkům - maže své příspěvky Moderátor - prohlíží články - vytváří diskusní téma (*) - vkládá komentáře ke článkům - maže diskusní téma (*) - uzamyká / odemyká téma (*) - vytváří příspěvky - maže všechny příspěvky - upravuje své příspěvky Administrátor - veškerá práva předchozích rolí - přiděluje práva jednotlivým uživatelům (*) - vytváří rubriky článků (*) - vytváří kategorie témat (*) - maže rubriky článků (*) - maže kategorie témat (*) Tabulka 3.1.1 Přehled uživatelských rolí a přidělených práv znakem * jsou v tabulce označeny funkce jež vzhledem k rozsáhlosti projektu nebyly zatím implementovány 9

Registrovaným uživatelem se rozumí uživatel, jemuž byl vytvořen uživatelský účet (s přihlašovacím jménem a heslem), vložením jeho údajů do databáze. Přidělená práva jednotlivým uživatelským rolím v rámci redakčního systému a diskusního fóra přehledně znázorňuje tabulka uživatelských rolí (viz. výše). 3.2 Datový model Před vlastní specifikací struktury databáze je vhodné si strukturu dat a jejich vazeb popsat v určité obecné abstraktní rovině. Snahou je vytvořit strukturu dat, tvořenou objekty (entitami) a jejich vlastnostmi, vzájemnými vztahy mezi entitami a různými omezeními, tak aby návrh co nejvíce odpovídal reálnému světu. K objektům datového modelu přistupujeme jako k jednoznačně identifikovatelným objektům reálného světa. Datový model systému se skládá z entitních typů: Uživatelé (entitní typ UŽIVATEL) vytvářejí obsah systému. V rámci redakčního systému mohou redaktoři (uživatelská role je atribut uživatele) vkládat články (ČLÁNEK) konkrétní článek může být do systému vložen pouze jedním redaktorem. Redaktor však zároveň nemusí do systému vkládat žádné články. Každý článek je zařazen do určité rubriky (RUBRIKA), přičemž může být zařazen pouze do jedné. Rubrika může obsahovat více článků, ale nemusí obsahovat žádné. Rubrika může obsahovat i další podrubriky. Ke každému článku lze přiřadit komentář (KOMENTÁŘ). Komentáře mohou vkládat i neregistrovaní uživatelé uživatel může k článku vložit i více komentářů. V rámci diskusního fóra mohou uživatelé vkládat příspěvky (PŘÍSPĚVEK), do diskusních témat (TĚMA). Do daného diskusního tématu lze vložit více příspěvků. Diskusní téma může obsahovat více příspěvků, ale nemusí obsahovat žádné.. Diskusní témata jsou členěna do kategorií (KATEGORIE), přičemž diskusní téma může patřit jen do jedné kategorie. Kategorie může obsahovat více témat, ale i žádné. Kategorie může obsahovat i další podkategorie. 3.3 Jazyk pro tvorbu dynamických stránek 3.3.1 CGI skripty Dynamické stránky mohou být vytvářeny externím programem, který webové stránky generuje. Protokol pro vytvoření rozhraní mezi programem a webovým serverem, který tento program vyvolává, se nazývá CGI (Common Gateway Protocol). Toto rozhraní umožňuje předávání požadavků od klienta (prohlížeče) externí aplikaci. Webový server pak vrací výstup aplikace zpět klientovi. Tvorba CGI programů může probíhat v jakémkoli programovacím jazyce, který umí číst ze standardního vstupu a zapisovat do standardního výstupu. Opomineme-li CGI programy vytvořené pomocí některého z klasických programovacích jazyků (C, Pascal, C++, Java CGI programy napsané v jazyce Java se nazývají servlety), jsou ve většině případů pro tvorbu CGI programů využívány interpretované skriptovací jazyky. Pomocí nich vytvořené CGI programy jsou označovány jako CGI skripty. CGI skripty vytvořené pomocí interpretovaných jazyků (např. Perl) se nacházejí v textové podobě a k jejich spuštění je používán interpret, jímž může být přímo spustitelný program 10

(přípona EXE) nebo některá DLL knihovna. Výhodou interpretovaných jazyků je rychlý vývoj bez nutnosti kompilace a linkování Velkou nevýhodou CGI skriptů jsou problémy se zabezpečením. V interpretovaných skriptech je nutné zajistit dodatečné zabezpečení, protože šikovný hacker může odesláním určitého textu v poli formuláře, který je skriptem zpracováván, získat neoprávněný přístup k systému, na kterém webový server běží. Dalším bodem, který hovoří proti používání CGI skriptů, je špatné nakládání se systémovými prostředky počítače, na kterém je webový server provozován. Při každém zpracování požadavku, který volá CGI program, je nutné daný program znovu spustit (server vždy spouští samostatnou instanci programu). Jestliže požadavek odeslal větší počet uživatelů, mohou se tak zdroje serveru brzy vyčerpat. V dnešní době podporuje tvorbu dynamických stránek pomocí CGI programů jen malé množství hostingových služeb (z free-hostingových služeb téměř žádná). Z důvodů, které jsem zde uvedl jsem použití CGI programů pro tvorbu redakčního systému zavrhnul. 3.3.2 ASP Než přikročím k rozebrání výhod a nevýhod technologie ASP (Active Server Pages) musím vysvětlit pojem ISAPI. ISAPI (Internet Server Application Programming Interface) je lepší alternativou CGI. Na rozdíl od CGI, kde každé volání spustí novou instanci programu, ISAPI při prvním požadavku na aplikaci ji nahraje do paměti, ve které zůstane a stále reaguje na další požadavky uživatelů. ISAPI umožňuje vytvářet tzv. filtry, což jsou vlastně knihovny DLL, které tvoří prostředníky mezi uživatelem a webovým serverem. Technologie ASP je filtr ISAPI vyvinutý firmou Microsoft. Soubory ASP jsou vlastně HTML stránky obohacené o skripty. Pokud uživatel požaduje soubor s příponou.asp, filtr ISAPI interpretuje kód ASP a výsledný kód (X)HTML předá webovému serveru, který jej odešle prohlížeči. ASP ve skutečnosti není jazyk jako takový - základem ASP je skriptovací jazyk. Používat se dá téměř kterýkoliv skriptovací jazyk, přičemž nejvíce používané jsou jazyky VBScript (Visual Basic Script) a Script (implementace jazyka JavaScript od firmy Microsoft). Velkou nevýhodou technologie ASP je její komerční politika není k dispozici zdarma. Technologie ASP je nativně používána pouze na webovém serveru IIS (Internet Information Server) firmy Microsoft. Závislost technologie ASP na platformě Windows, spolu s menší podporou hostingových služeb byly důvodem, proč jsem tuto technologii pro vytvoření systému nepoužil. 3.3.3 PHP Jedním z otců technologie PHP (PHP Hypertext Preprocessor) je Rasmus Lerdorf. V roce 1994 si Rasmus ve volném čase vytvořil jednoduchý systém pro evidování přístupu k jeho stránkám v interpretovaném jazyce Perl. Jelikož neustálé spouštění interpretu Perlu velmi zatěžovalo webový server, přepsal autor systém do jazyka C. Systém původně navržený pro osobní Rasmusovo použití se zalíbil i ostatním uživatelům serveru a začali ho používat. Ti přicházeli s požadavky na vylepšení celého systému. Autor proto celý systém rozšířil, doplnil jej o dokumentaci a uvolnil pod 11

názvem Personal Home Page Tools, který se později změnil na Personal Home Page Construction Kit. V téže době zprovoznil autor elektronickou konferenci pro výměnu zkušeností mezi uživateli systému. Později Lerdorf vytváří i nástroj, který umožňuje začleňování SQL dotazů do stránek, vytváření formulářů a zobrazování výsledků dotazů. Program pro zpřístupnění databází na webu nesl název Form Interpreter (FI). Spojením těchto dvou programů vznikl systém PHP/FI 2.0, který si získal celosvětovou proslulost. Jednalo se o jednoduchý programovací jazyk, který se zapisoval přímo do HTML stránek. Obsah zkratky PHP dnes ztratil svůj původní význam a doporučené označení celého systému je hypertextový preprocesor PHP. PHP je tedy skriptovací jazyk, jehož příkazy jsou do webových stránek umístěny mezi speciální oddělovače (<??>, <?php?>). Vlastní skriptovací jazyk kombinuje několik programovacích jazyků C, Perl, Java. Jazyk PHP umožňuje snadnou tvorbu dynamických stránek. Obsahuje rozsáhlé knihovny funkcí pro zpracování textu, grafiky, práci se soubory, přístup k různým databázovým serverům, podporu řady internetových protokolů (HTTP, SMTP, FTP, POP3, ). PHP lze jednoduchým způsobem doplnit o nové funkce, které standardně nejsou jeho součástí. Stránky obsahující PHP vsuvky jsou pro odlišení od běžných webových stránek ukládány s příponou.php (.php3,.phtml). Vývoj technologie PHP se zdaleka nezastavil. V současné době je k dispozici verze 5.15 s pátou verzí se výrazně zlepšil přístup k objektově orientovanému programování, který je podobný jako v jazyce Java. Důvodem oblíbenosti jazyka PHP je jednoduchost jeho použití. Tím že PHP kombinuje vlastnosti více programovacích jazyků, ponechává vývojáři částečnou svobodu v syntaxi. PHP taktéž umožňuje přístup k mnoha datovým zdrojům a SŘBD (Systémům Řízení Báze Dat) v jejich nativním formátu nebo přes obecné rozhraní ODBC (Open Database Connectivity). Obrovskou výhodou technologie PHP je to, že je šířena jako freewarový produkt včetně zdrojových kódů. PHP není závislé ani na platformě ani na webovém serveru na kterém je provozováno. Lze jej tedy užívat jak pod Windows tak i pod jinými operačními systémy s tím, že není svázáno s žádným konkrétním serverem a proto může běžet na libovolném. To dokazuje i obrovský počet serverů na kterém je PHP používáno a jeho velká podpora ze strany hostingových služeb. Výhody, které technologie PHP nabízí, se slučují s požadavky vytvářeného systému a to především z hlediska využitelnosti. Z těchto důvodů jsem si jako jazyk pro tvorbu dynamických stránek vybral právě technologii PHP a to konkrétně verzi 4.2.x, která je podporována na většině serverů (jen omezené množství serverů nabízí podporu PHP ve verzi 5.x). PHP ve verzi 5 je zpětně kompatibilní s verzí 4, ale zahrnuje obrovské množství nových funkcí. Ačkoliv jsem systém vyvíjel pomocí PHP verze 5.1.1, dbal jsem na to, abych využíval jen funkcí, které jsou obsaženy i v PHP verze 4.2.x a zajistil tak kompatibilitu. Velkým zdrojem informací o jazyce PHP a referenční příručkou mi byla kniha od Jiřího Koska [4]. 3.4 Webový server Ruku v ruce s výběrem skriptovacího jazyka pro vytváření dynamických stránek jde i výběr webového serveru na kterém má být vytvořený systém provozován. Dvěma nejpoužívanějšími webovými servery v dnešní jsou servery Apache a IIS od firmy Microsoft. 12

3.4.1 IIS IIS neboli Internet Information Services označuje sadu internetových služeb pro servery běžících pod operačním systémem Microsoft Windows. Dle anglické společnosti Netcraft, která se zabývá monitorováním internetu se zaměřením na analýzu používaných webových serverů a operačních systémů na kterých servery běží, je webový server IIS druhým nejpoužívanějším hned po serveru Apache, který je používán na nadpoloviční většině webových serverů. Dle statistik se propast mezi množstvím využití serveru Apache a serveru IIS nadále prohlubuje a to ve prospěch technologie Apache. Webový server IIS je komerční produkt, který je distribuován společně s operačním systémem Microsoft Windows Server 2003, což není zrovna laciná záležitost. Spjatost webového serveru IIS a menší podpora technologie ze strany hostingových služeb mě odradily od využití tohoto serveru. 3.4.2 Apache Apache HTTP Server je softwarový webový server šířený pod open-source licencí. Je použitelný na množství moderních operačních systémů Unix, Microsoft Windows, Linux. Jeho vývoj začal v roce 1993 v NCSA (National Center for SuperComputing Applications) na Illinoiské univerzitě. Původní název projektu byl NCSA HTTPd. Odchod hlavního programátora Roba McCoola z vývojářského týmu v roce 1994 vedl ke zpomalení vývoje a v roce 1998 k jeho úplnému zastavení. NCSA HTTPd se mezitím rozšířil mezi správci serverů, kteří jej používali a dodávali k němu vlastní úpravy patche (záplaty). Odtud pochází název webového serveru Apache A patchy server (záplatovaný server). Hlavní úlohu v dalším vývoji sehráli Brian Behlendorf a Cliff Skolnick, kteří založili emailovou konferenci a začali sběr úprav a oprav a jejich distribuci koordinovat. První veřejná verze s označením 0.6.2 byla vydána v dubnu 1995. Následovalo kompletní přepsání kódu (Apache 2 neobsahuje nic z původního NCSA HTTPd) a založení Apache Group, která je dnes základem vývojářského týmu. Od dubna 1996 byl Apache nejpopulárnějším serverem na internetu. Dle průzkumů firmy Netcraft dosáhla používanost serveru Apache v listopadu 2005 jeho používanost 69% všech webových serverů. Apache je velice výkonný a stabilní server, který je k dispozici zadarmo. Skriptovací jazyk PHP, který jsem si pro implementaci zvolil může být používán na jakékoliv platformě, se serverem Apache však tvoří velice silnou kombinaci. Kombinace serveru Apache a skriptovacího jazyka PHP pro mě byla ideální volbou. 3.5 Databáze Všechna data tvořící informační obsah vytvářeného systému by měla být uložena v datové vrstvě webového serveru. Datová vrstva je ve většině případů tvořena databází, která poskytuje mnoho výhod při přístupu k datům a jejich zabezpečení. Databázových systémů dnes existuje mnoho ale mezi nejpoužívanější patří: Oracle Microsoft SQL Server Microsoft Access PostgreSQL MySQL 13

Tento krátký výčet samozřejmě nezahrnuje všechny dnes dostupné databáze. Jednotlivé databáze se velmi liší množstvím funkcí, které poskytují ale i rychlostí přístupu k datům. 3.5.1 Oracle Oracle je v současnosti jeden z nejpropracovanějších databázových systémů. Jediná jeho podstatná nevýhoda je, že neexistuje bezplatná verze a ceny komerčních licencí jsou vysoké. Z tohoto důvodu je provozován pouze úzkým okruhem hostingových služeb a cena těchto služeb je pro běžného uživatele taktéž poměrně vysoká. 3.5.2 Microsoft SQL Server Microsoft SQL Server je výkonný databázový systém společnosti Microsoft, který byl běžně používán ke správě menších až středně velkých databází. V posledních pěti letech však tento produkt zaznamenal zvýšené využití i v oblasti větších podnikových (enterprise) databází. Omezením tohoto databázového systému je závislost na platformě Microsoft Windows a ačkoliv se jedná o kvalitní produkt, jeho cena se pohybuje nad možnostmi běžných uživatelů. Pro úplnost je třeba dodat, že firma Microsoft poskytuje také bezplatnou verzi MS SQL Serveru s názvem MSDE (Microsoft Data Engine), což je databáze upravená pro použití v menších projektech. Optimální výkon MSDE je však zaručen pro maximálně pět souběžných uživatelských přístupů a proto je pro naše účely ztěží použitelný. 3.5.3 Microsoft Access Microsoft Access (plný název Microsoft Office Access) je systém pro správu relačních databází od firmy Microsoft, který je částí balíku Microsoft Office Professional, jedná se tedy o komerční produkt. Microsoft Access může přistupovat k datům uloženým v databázích Microsoft SQL Server, Oracle, ale i k jakékoli databázi vyhovující ODBC rozhraní. V projektech Microsoft Access lze využít dotazovacího jazyka SQL. Tento systém se hodí spíše pro správu menších databází a pokud je očekáván velký počet dotazů na databázi, je lepší využít silnějších zbraní jako třeba Microsoft SQL Server nebo MySQL (viz. níže). Souborové databáze typu access mají poměrně slabou výkonnost a při větším provozu dochází k chybám a přetěžování stroje. Microsoft Access je vázán na platformu Windows. 3.5.4 PostgreSQL PostgreSQL je robustní plnohodnotný relační databázový systém s otevřeným zdrojovým kódem. Je produktem patnáct let trvajícího aktivního vývoje a má vynikající pověst pro svou spolehlivost a bezpečnost. Systém lze provozovat na všech rozšířených operačních systémech včetně Linuxu, Uniových OS a Windows. PostgreSQL je šířen pod BSD licencí (Berkeley Software Distribution), která,jak význam zkratky napovídá, pochází z Kalifornské univerzity v Berkeley a která je nejliberálnější ze všech open source licencí. Systém PostgreSQL může být dle licence neomezeně používán, modifikován i distribuován. Velkou předností systému PostgreSQL je rozšiřitelnost. Systém může být rozšířen o nové datové typy, funkce, operátory, agregační funkce. 3.5.5 MySQL MySQL je vysoce výkonný a stabilní relační databázový systém, který dokáže pojmout velké množství dat, aniž by při tom ztratil mnoho ze svého výkonu. MySQL není vázán 14

na konkrétní platformu a může být využit na všech dnes používaných operačních systémech. Systém MySQL je průkopníkem dvojího licencování k dispozici je jak pod bezplatnou licencí GPL 1 (General Public Licence), tak pod komerční placenou licencí, jejíž cena však není nijak vysoká a je jen zlomkem ceny konkurenčních produktů. Systém MySQL byl od počátku optimalizován především na rychlost, a to i za cenu některých zjednodušení. Starší verze systému MySQL, využívající výchozího typu tabulek MyISAM 2 nepodporuje pohledy, triggery, poddotazy, transakce, referenční integritu (cizí klíče). Většina těchto nedostatků byla odstraněna v novějších verzích MySQL a pomocí dalšího typu tabulek InnoDB. Přehled podporovaných vlastností: Cizí klíče (podporovány v tabulkách InnoDB od verze 3.23) Transakce (podporovány v tabulkách InnoDB od verze 3.23.44) Poddotazy (od verze 4.1) Triggery (od verze 5.0) Pohledy (od verze 5.0) Nově podporované pokročilé vlastnosti systému jsou kvůli malé podpoře tabulek InnoDB a nasazení starších verzí MySQL na serverech třetích stran pro mé účely přesto nepoužitelné. Mrzí mě to především kvůli nemožnosti využití referenčních integrit, transakcí a pohledů tyto vlastnosti však pro vytvoření redakčního systému nejsou nezbytné. Pro svůj výkon a díky volné šiřitelnosti softwaru má systém MySQL vysoký podíl v současné době používaných databázích. Velmi oblíbená a jako základní software webového serveru nasazovaná je kombinace MySQL, PHP a Apache. Velice užitečnou pomůckou pro správu tabulek databáze MySQL prostřednictvím webového rozhraní je program phpmyadmin napsaný v jazyce PHP. 3.5.6 Zhodnocení Po uvedení výčtu používaných databázových systému a jejich kladů a záporů je třeba vybrat databázi, která nejlépe odpovídá účelům redakčního systému. První dva komerční produkty Oracle a Microsoft SQL Server jsem z výběru použitelného databázového systému vyloučil pro jejich nedostupnost běžnému uživateli, která je dána vysokou cenou a malou podporou ze strany hostingových služeb. Pro jejich nespornou kvalitu a propracovanost jsem se však o nich nemohl nezmínit. Databáze Microsoft Access nesplnila požadavky především pro svou vazbu na operační systém Windows a menší výkonnost při větší zátěži databáze. Ze zbylých dvou databází PostgreSQL a MySQL jsem nakonec zvolil systém MySQL. Ačkoliv databáze PostgreSQL nabízí širokou funkčnost a rozšiřitelnost, obrovská 1 GPL licence umožňuje neomezené užívání softwaru. Zdrojové mohou být používány a upravovány, ale šířeny musí být opět pod GPL licencí a to bezplatně (případně za cenu distribučních nákladů). 2 MyISAM je označení pro výchozí ukládací engine systému MySQL operace nad tabulkami tohoto typu jsou velice rychlé 15

podpora ze strany hostingových služeb a vysoký výkon jsou - i přes nemožnost využití pokročilých vlastností systému - argumenty pro výběr databáze MySQL. 3.6 Skriptovací jazyk na klientské straně Provádění programů a skriptů pouze na straně serveru zpomaluje odezvy na požadavky uživatelů. Řešením je přesun provádění části skriptů ze strany serveru na stranu klienta (prohlížeče). Ve vytvářeném redakčním systému má být skriptů na klientské straně využíváno především pro kontrolu správnosti údajů vyplňovaných uživateli do formulářů před jejich odesláním serveru. První technologií, která daný problém řeší, je jazyk Java od firmy Sun MicroSystems. Tento jazyk umožňuje psaní appletů, programů, které mohou být začleněny přímo do HTML stránky. Velkou výhodou Javy je její nezávislost na platformě programy jsou po síti přenášeny formou byte kódu, který je spustitelný v libovolném operačním systému, pokud pro něj existuje JVM (Java Virtual Machine) - interpret Javy. Java je výborná perspektivní technologie, jejíž možnosti jsou opravdu široké. Kvůli své univerzálnosti je však poměrně náročná na systémové zdroje počítače. Druhou technologií je JavaScript, s kterým přišla v roce 1996 firma Netscape a zabudovala jej do svého legendárního prohlížeče Netscape Navigator. JavaScript je jednoduchý interpretovaný jazyk, který syntaxí vychází z jazyku Java. JavaScript se přímo zapisuje do kódu stránky nebo může být načten z externího souboru s příponou.js. Jeho nejčastější použití je ve spojení s formuláři. Skripty v JavaScript mohou kontrolovat správnost údajů v jednotlivých polích formuláře ještě před odesláním na server. Uživatel získá mnohem rychlejší odezvu, než kdyby údaje byli odeslány ke zpracování na server. Další oblastí využití JavaScriptu je vylepšení interaktivnosti stránek JavaScript může reagovat na události vyvolané uživatelem (např. změna barvy pozadí odkazu při přejetí myší). JavaScript je svými možnostmi pro vytvářený redakční systém ideální. Omezení jazyka JavaScript: Funguje pouze v prohlížeči Neumí přistupovat k souborům (kromě cookies) ani k systémovým objektům Neumí data uložit (kromě cookies) Uživatel může JavaScript zakázat 3.7 Formát generovaných dokumentů a definice vzhledu Až do této chvíle jsem pro dokument prezentovaný na internetu používal jako synonymum termín HTML stránka. Toto označení je zavádějící a čtenář tohoto textu by se mohl domnívat, že HTML je jediným možným formátem webového dokumentu. Rozhodně tomu tak není, ačkoliv většina dokumentů (především z dřívějších dob) vytvořená v tomto formátu tomu příliš nenasvědčuje. Od vytváření stránek v jazyce HTML se dnes postupně upouští. Jazyk HTML totiž umožňuje ve svém kódu používat značek a atributů definujících vzhled dokumentu. Při změně vzhledu takového dokumentu je nutné změnit jeho kód. Jazyk HTML již přestává vyhovovat pro svou složitost, která vznikla jeho postupným (a svévolným) rozšiřováním. 16

3.7.1 XML Dalším jazykem pro vytváření webových stránek je XML (extensible Markup Language), což je obecný značkovací jazyk, který byl vyvinut a standardizován konsorciem W3C [1]. XML umožňuje snadné vytváření konkrétních značkovacích sad pro různé účely. Jazyk umožňuje popsat strukturu dokumentu z hlediska věcného obsahu jednotlivých částí a sám o sobě se vzhledem dokumentu nezabývá. Vzhled dokumentu se definuje připojeným stylem. Další možností je pomocí různých stylů provést transformaci do jiného typu dokumentu nebo do jiné struktury XML. Jazyk XML neobsahuje předdefinované značky (tagy) a je třeba definovat značky, které budeme používat. Značky je možné (nepovinně) definovat v souboru DTD (Dokument Type Definition). XML dokument lze poté kontrolovat, zda odpovídá této definici pomocí programu zvaného parser. Při používání XML dokumentu jej také potřebujeme zobrazit. XML samo žádné prostředky pro definici vzhledu nenabízí. Soubor pravidel pro změnu vzhledu dokumentu nebo pro převod do jiného formátu se nazývá styl a lze jej definovat pomocí několika stylových jazyků. Jeden styl můžeme aplikovat na větší počet dokumentů stejného typu, ale taktéž můžeme na jeden dokument aplikovat více různých stylů. 3.7.2 XHTML Značkovací jazyk XHTML je následníkem jazyka HTML, ale na rozdíl od svého předchůdce se jedná o aplikaci XML. Cílem bylo převedení staršího jazyka HTML tak, aby vyhovoval podmínkám tvorby XML dokumentů. Syntaxe jazyka XHTML je oproti HTML přísnější. Stejně jako jazyk HTML i XHTML existuje ve třech druzích: Strict (nejpřísnější varianta), Transtional a Frameset, které se liší množstvím povolených formátovacích značek a tím i důsledností oddělování informačního obsahu stránek od formy. 3.7.3 CSS Obr. 3.7.1 Druhy jazyků HTML a XHTML Pro popis způsobu zobrazení stránek napsaných v jazycích HTML, XHTML nebo XML se využívá kaskádových stylů CSS (Cascading Style Sheets). Hlavním smyslem použití stylů je oddělení vzhledu dokumentů od jejich struktury a obsahu. Tuto možnost měl 17

zajišťovat už jazyk HTML, ale v důsledku nedostatečných standardů a konkurenčního boje prohlížečů se vyvinul do podoby, která obsahuje celou řadu elementů popisujících zobrazení dokumentu. Z hlediska vyhledávání informací a zpracování dokumentů není takový vývoj žádoucí. Velkou výhodou CSS je, že veškerý design a formátování se načítá z externího souboru.css, který může být společný pro celý web (souborů se styly může být více a mohou být vzájemně kombinovány) při změně designu webu pak stačí pouze opravit tento soubor. Definice stylů může být také přímou součástí HTML / XHTML dokumentu, ale tím ze vytrácí výhoda použitelnosti definovaných stylů i pro další stránky. Kaskádové styly umožňují vytvářet různá zobrazení dokumentu pro různá výstupní zařízení (např. pro tisk). Rozsáhlým zdrojem informací o kaskádových stylech je kniha Petr Staníčka [6]. 3.7.4 DHTML Technologie DHTML (Dynamic Hypertext Markup Language) vychází ze stejné myšlenky jako skriptovací jazyk JavaScript. Jejím cílem je dokument reagující na události bez spolupráce se serverovou stranou webové aplikace (změna obsahu stránky, validace formulářů). V DHTML je přístupný každý objekt webové stránky a s každým objektem je možné manipulovat měnit jeho obsah, způsob zobrazení apod. Jako objekty jsou přístupné i styly připojené ke stránce. DHTML je skloubením následujících technologií: DOM (Dokument Object Model), což je objektově orientovaná reprezentace webových dokumentů umožňující modifikaci obsahu, struktury nebo stylu dokumentu a jeho částí. Skriptovací jazyk na klientské straně - JavaScript Kaskádové styly CSS Obr. 3.7.2 DHTML použité technologie Za výsledný formát dynamicky generovaných dokumentů jsem zvolil jazyk XHTML. Přísnější kontrola syntaxe v tomto jazyce zabraňuje psaní nevalidních webových stránek, které mohou být v různých prohlížečích špatně interpretovány. V souladu s technologií DHTML je vzhled dokumentů definován pomocí kaskádových stylů a interakce s uživatelem je obstarávána pomocí JavaScriptu. 18