ČLÁNEK

Andrej Niesner
1
4 minuty

Jednoduchý diskuzní systém za použití PHP a textového souboru

Komunikace je velmi potřebným aktem pro fungování v dnešním světě. Stejně jako v realitě je potřeba se dorozumívat i ve virtuálním světě internetu. Existují různé způsoby, jak toho docílit. Komunikovat se dá například přes programy podporující online hlasové konverzace, jako jsou například Messenger, nebo Skype. Další možností komunikace je psaní přes internet, nebo programy kterými jsou například ICQ, Messenger nebo Skype. Dále je možno komunikovat pomocí psaní přímo v internetových prohlížečích na webech, nebo v aplikacích k tomu určeným. V každém z těchto případů je nutné data někde uchovávat, někam je "skladovat". V tomto článku si ukážeme dva způsoby, jakými lze data ukládat a kam se v jednotlivých případech "skladují".

Prvním, jednodušším, ale zároveň méně bezpečným způsobem je ukládání dat do textového souboru uloženého na webovém serveru společně s webovými soubory pomocí kterých to má vše fungovat. Zmínka o menší bezbečnosti tohoto způsobu na začátku tohoto odstavce je velmi opodstatněná. Je to z toho důvodu, že soubor, do kterého se zapisují data není nijak chráněn vůči vkládání "zákeřného" obsahu. Zákeřným obsahem je myšleno vkládání textu, nebo funkcí majících tendenci manipulovat s vnitřním obsahem serverového úložiště (toho, na kterém jsou uloženy všechny Vaše soubory). 

<?
$web = $_POST['web'];
$popis = $_POST['popis'];

$web=htmlspecialchars($web);

$web=stripslashes($web);
$popis=stripslashes($popis);

$popis = str_replace("\n"," <br> ", $popis);
$popis = substr($popis, 0, 10000);

$web_celek="<a href='http://$web'>$web</a>";
$popis_celek="<div id='descript'>$popis</div>";

if ($web=="http://"){$web_celek="";}

$celek="<strong>$web_celek</strong>$popis_celek";
$soubor = fopen ('project.inc','a');
fwrite ($soubor, $celek);
fclose ($soubor);

exit();

?>

Popis znázorněného kódu je velmi prostý. Pokud se podíváme na první dva řádky, najdeme v nich deklaraci proměnných hodnot, které pocházejí z formuláře pomocí metody POST. 

Třetí řádek převádí HTML znaky na kalsický text, což znamená, že pokud se vyskytne v textu například html tag <div></div>, bude převeden a zobrazen, jako klasický text.

Čtvrtý a pátý řádek společně odstraňují lomítka ( / ) z textu. A nedovolí jejich vypsání na webové stránce.

Funkce v následujícím řádku str_replace() má svoji specifickou úlohu v nahrazování odentrovaného řádku v proměnné za tag <br>, který si prohlížeč vezme, jako součást Vaší HTML stránky a vytvoří se Vám přeskok na nový řádek.

Následující řádek, který obsahuje funkci substr() se stará o dodržení maximální možný počet znaků v řetězci. V tomto případě je daný počet znaků od nuly až po deset tisíc. Pokud počet znaků přesáhne maximální limit, zpráva se neodešle.

Dále následují řádky, které vytvářejí kombinaci HTML tagů s proměnnými v PHP. První řádek začínající jako $web_celek vytváří odkaz pro proměnnou $web. Druhý řádek začínající proměnnou $popis_celek zahrne proměnnou $popis mezi kontejnerový HTML tag, pomocí kterého je možné jej stylisticky upravovat v CSS kaskádách.

Následuje podmínka, která zajišťuje v případě jejího splnění (pokud není prázdná) automatické přidání protokolu (http://) před vložený text (adresu url).

Řádek začínající proměnnou $celek převádí všechny předchozí proměnné do jediné proměnné.

Následující řádek s proměnnou $soubor otevře pomocí funkce fopen() soubor, do kterého se mají všechna data zapsat. V tomto případě je název souboru "project.inc". Příkaz 'a' slouží pouze pro zapsání informací do souboru, nikoliv k jeho úpravám.

Funkce fwrite() na následujícím řádku natvrdo zapíše informace do souboru zapomoci proměnných.

Řádkem obsahujícím funkci fclose() se soubor uzavře. A hned po jeho provedení se pomocí funkce exit() smažou veškeré proměnné, které jsou uloženy mezipaměti Vašeho prohlížeče. Je to nutné z důvodu aktualizace stránky, protože pokud by tam funkce exit() nebyla, při každé rektualizaci stránky zapsal do souboru stejný obsah, jako při posledním odeslání zkrze formulář.

ImperativPHPNoSQL
Základy podmínek v PHP
Cookies
V souladu s vaším potvrzením používáme cookies soubory, abychom Vám mohli nabídnout co nejvhodnější obsah.
Zpět nahoru