(hotový projekt ke stažení...)




Návštěvní kniha v jazyce PHP a MySQL






vypracoval: Stanislav Vasko V/22




Zadání:


Realizovat pomocí PHP a MySQL návštěvní knihu pro integraci ve web stránkách. Celý projekt udělat srozumitelný pro nováčka či pro koncového uživatele, jenž jednoduchou změnou hlavních parametrů bude schopen tuto knihu implementovat do svých webových stránek. Celý projekt zdokumentovat a převést na web stránku.



Použité nástroje a SW:


Z důvodu snadné přenositelnosti mezi jednotlivými operačními systémy jsem zvolil jako server server Apache. Jako databázový program MySQL a jako programovací jazyk PHP přesně dle zadání. Export programu do dalších databázových prostředků je celkem snadný, neboť MySQL dodržuje normu jazyka SQL a stačí tedy volit jen ekvivalenty ostatních SQL prostředků. Veškeré nutné softwarové vybavení je zdarma, volně šiřitelné a je tedy i nejpoužívanějším a může ho snadno kdokoliv získat jak z internetu, tak na různých reklamních CD či v přílohám časopisů.



Popis problému a vytčení cílů:


Návštěvní kniha je v celku jednoduchý program v PHP spolupracující s databází sloužící jak uživatelům, tak vlastníkovi web stránek k jednoduchému zanechání zprávy o přístupu a případný komentář. Většinou se jedná o posouzení kvality webových stránek, nebo o vyjádření se k obsahu. Někdy je návštěvní kniha výhodná jako jakási registrace určité komunity, jenž má něco společného a její členové uvítají dát o sobě vědět a naopak si vhodný kontakt vyhledat.

Aby bylo vyhověno všem výše zmíněným podmínkám, bude vstupní formulář obecného charakteru a obsahuje položky:


Přezdívka jméno či přezdívka (nickname) uživatele, jenž zanechal zprávu

e-mail e-mailový kontakt

název zprávy nadpis zanechané zprávy

zprávu zpráva samotná


samozřejmě je snadné upravit jak počet položek, tak jméno a obsah položek samotných.

Dále z důvodu ochrany a zamezení zneužití bude blokováno vkládání html tagů přímo do kolonek návštěvní knihy, resp. budou zobrazovány jako syntaxe html, neboť toto je jediný způsob, jak zamezit, alespoň částečně, vtipálkům jenž se snaží na náš účet pobavit. V budoucnu by nebylo špatné ještě přidat blokování na straně uživatele pomocí JavaScriptu, ale toto není účelem tohoto cvičení a zbytečně by to znepřehlednilo náš program, proto od tohoto upustím.



Instalace potřebného SW:


Potřebný SW pro naši aplikaci je zcela zdarma. Uživatelé Windows mohou s úspěchem využít předkonfigurovaného programu PHP Triad (podporuje vše od Win95 až po WinXP). Zde se jedná o triádu programů Apache, MySQL a PHP, čili přesně to co je potřeba.

Pro zkušenější uživatele lze raději doporučit instalaci jednotlivých programů odděleně, neboť bude umožněna plná kontrola nastavení a možnost plné kontroly jednotlivých verzí programů. Odkazy na jednotlivé programy ke stažení jsou v příloze E.

Uživatelé systému linux mají podstatně jednodušší práci, neboť většina nových distribucí veškeré nutné programy už obsahuje a dojde k jejich automatické instalaci a základnímu nastavení. Pokud tomu tak není, je opět možné vše potřebné sehnat na webových adresách podle přílohy E.



Instalace serveru Apache, PHP a MySQL:

Program tak jak je navržen, je zcela fungující a není problém ho spustit na jakémkoliv OS, kde je korektně nainstalován a nakonfigurován server. Bohužel, jednotlivé instalace se mohou od sebe lišit a tedy je nutné program přizpůsobit pro korektní nastavení a instalaci. Jelikož se jedná o vždy stejné parametry, stačí postupovat dle následujících kroků a program poupravit:


    1. Nejprve je nutné ověřit, zda je vše v pořádku a povedlo spuštění a začlenění serveru do operačního systému. Za tímto účelem spusťte svůj oblíbený webovský prohlížeč a do kolonky adresa vepište jméno vašeho serveru. Pokud využíváte přednastavených hodnot, bude se váš server s největší pravděpodobností jmenoval localhost. Na toto musí server zareagovat a zobrazit implicitní stránku, nejčastěji obsahující informaci s gratulací a poděkovaním za výběr právě jejich serverového řešení. Pokud se tak nestane, není možné dále pokračovat a chybu je nutno dohledat v konfiguračním souboru serveru.

      Pokud vše pracuje jak má, otestujeme zda nám funguje integrace jazyku PHP. To otestujeme velice jednoduše a sice za použití sktiptu podle přílohy A. Ten si uložíme do domácího adresáře serveru, aby došlo k jeho provedení, například pod jménem test.php. Potom tento program zavoláme adresou: localhost/test.php. Pokud je vše v pořádku, uvidíme obrazovku velmi podobnou této:


Pokud se na výpis podíváte podrobněji, zjistíte že obsahuje spoustu užitečných informací, nevyjímaje kompletní popis aktuálního nastavení. Tato tabulka se též bude velmi hodit při umisťování našich programů na server, neboť nám prozradí, jak je server nakonfigurován.

Pokud se výpis nezobrazí, opět je někde problém a tentokrát je nutno hledat problém k konfiguračním programu php.ini a opět v nastavení serveru, kde je zřejmě špatný odkaz na PHP interpretr.


(3)

Nakonec nainstalujeme MySQL. To je nejsnadnější záležitost a není ani nutno nijak provádět nastavení.



Nakonec bych rád upozornil uživatele linuxu, aby se při instalaci Apache, PHP a MySQL ujistili, že došlo i k instalaci baličků pro komunikaci mezi těmito programy. Například v distribuci Mandrake není implicitně instalováno MySQL a ani jeho vazba na PHP.



Příloha A:


<?

phpinfo();

?>


Příloha B:

<?

##############################################################################

#

# Napsal Stanislav Vasko, V/22

#

##############################################################################


##############################################################################

# Pro praci s Knihou Navstev musime nejprve v MySQL vytvorit tabulku

##############################################################################


$link_jmeno=localhost; //sem doplnte jmeno serveru, kde se nachazi databaze

$db_jmeno=test; // sem doplnte jmeno databaze, kde je ulozena tabulka


@$spojeni = MySQL_Connect($link_jmeno) or die ("Nepodarilo se pripojit k MySQL serveru");


@$vybrana = MySQL_Select_DB($db_jmeno) or die ("Nepodarilo se pripojit k databazi");


#############################################################################

# Prikazy MySQL ktere se odeslou a vytvori tabulku zadanych parametru s primarnik klicem ID

#############################################################################


@$data = MySQL_Query("

CREATE TABLE kniha (

ID int NOT NULL,

prezdivka varchar(15) NULL,

email varchar(50) NULL,

URL varchar(50) NULL,

datum varchar(15) NULL,

vzkaz text NULL,

PRIMARY KEY (ID))") or die ("Nepodarilo se vytvorit tabulku!");


#############################################################################

# Pokud je vse OK, uvidite tento text:

#############################################################################

echo "Tabulka byla úspěšně vytvořena.";


?>


Příloha C:


<?

#############################################################################

#

# Napsal Stanislav, OK1VDX

# Program pro provozovani knihy navstev pomoci PHP a MySQL

#

#############################################################################


#############################################################################

# definice promennych pro komunikaci s MySQL

#############################################################################


$link_jmeno=localhost; //sem doplnte jmeno serveru, kde se nachazi databaze

$db_jmeno=test; // sem doplnte jmeno databaze, kde je ulozena tabulka

$radek=10; //urcuje, kolik prispevku bude obsahovat jedna strana navstevni knihy


#############################################################################

# pripojovani k MySQL serveru a databazi

#############################################################################


$link = MySQL_Connect($link_jmeno) or die ("Nepodarilo se pripojit k MySQL serveru");

$db = MySQL_Select_DB($db_jmeno) or die ("Nepodarilo se nastavit databazi jako aktivni");


#############################################################################

# pridani dalsiho zaznamu

#############################################################################


if ($pridat == "ok") {


$vysledek = MySQL_Query("SELECT ID FROM kniha ORDER BY ID DESC") or die ("Nepodarilo se otevrit tabulku KNIHA!");


$zaznam = MySQL_Fetch_Array($vysledek);


$ID = $zaznam["ID"];

if ($ID == "") {

$ID = 0;

}

++$ID;


$datum = Date("j.m. Y");


$vysledek = MySQL_Query("INSERT INTO kniha VALUES (".$ID.", '".HTMLSpecialChars($prezdivka)."', '".HTMLSpecialChars($email)."', '".HTMLSpecialChars($URL)."', '".$datum."', '".HTMLSpecialChars($vzkaz)."')");

if (!$vysledek) {<?

phpinfo();

?>

echo "Doslo k chybě při zpracování dotazu v databázi.<BR>\n";

exit;

}


}


?>


<HTML>

<HEAD>

<TITLE>Kniha navstev</TITLE>

</HEAD>

<BODY bgColor="#00BFFF" text="black">

<CENTER>

<H1><font color="#1547F9" >Kniha navstev</H1>


<FORM name="standa" method="POST" action="kniha.php">

<INPUT type="hidden" name="pridat" value="ok">


<TABLE border="0" cellpadding="0" cellspacing="0">

<TR valign="middle">

<TD align="right">

<h3>

Volacka:&nbsp;

<TD align="left"><INPUT type="text" size="15" maxlength="15" name="prezdivka"><TR valign="middle"><TD align="right">

<h3>

E-mail:&nbsp;

<TD align="left"><INPUT type="text" name="email" size="30" maxlength="50" value="@"><TR valign="middle"><TD align="right">

<h3>

Web stranky:&nbsp;

<TD align="left"><INPUT type="text" name="URL" size="30" maxlength="100"><TR valign="top"><TD align="right">

<h3>

Vzkaz:&nbsp;

<TD align="left"><TEXTAREA name="vzkaz" rows="10" cols="60"></TEXTAREA>

</TD></TR>

</TABLE>


<BR><INPUT type="submit" value="Pridat">

</FORM>


<HR size="1" color="#000000">


</CENTER>


<?


$vysledek = MySQL_Query("SELECT * FROM kniha ORDER BY ID DESC") or die ("Problemy s tabulkou KNIHA!");


$i = 0;

while ($zaznam = MySQL_Fetch_Array($vysledek)) {

if ($pocet == "") {

$pocet = 0;

}


$i++;

$max_pocet = $pocet + $radek;


##############################################################################

# Vypis jedne stranky knihy

##############################################################################


if (($i > $pocet) and ($i <= $max_pocet)) {

echo "<B>Call: <FONT color=\"#FF0080\">".$zaznam["prezdivka"]."</FONT>, zanechal(a) vzkaz ".$zaznam["datum"]."<BR>\n";

echo "E-mail: <A href=\"mailto: ".$zaznam["email"]."\">".$zaznam["email"]."</A><BR>\n";

echo "URL: <A href=\"".$zaznam["URL"]."\">".$zaznam["URL"]."</A><BR></B>\n";

echo $zaznam["vzkaz"]."<BR><BR>\n";

echo "<HR size=\"1\" color=\"#000000\">";

}

}


$zpet = $pocet - $radek;

$vpred = $pocet + $radek;


if ($pocet != 0) {

echo "<A href=\"kniha.php?pocet=".$zpet."\"><B>&lt;&lt; PREDCHOZI </B></A>";

}

if ($vpred < $i) {

echo "<A href=\"kniha.php?pocet=".$vpred."\"><B> DALSI &gt;&gt;</B></A>";

}


?>

</BODY>

</HTML>


Příloha C:


<?

phpinfo();

?>


Příloha D, použitá literatura:

PHP HOWTO

MySQL HOWTO


Příloha E, internetové adresy:


apache server www.apache.org

MySQL databáze www.mysql.org

PHP plugin www.php.org

dokumentace pro linux www.tldp.org