Diskuze v PHP bez použití databáze
Tento článek vám ukáže, jak realizovat velice jednoduchou diskuzi v PHP bez použití databáze. To může být výhodné zejména tehdy, když s databází ještě neumíte pracovat.
Jako první si vytvoříme nový PHP soubor, v našem případě diskuze.php.
Formulář:
Klasický formulář <form>, kterým budeme odesílat data. Abychom k nim po odeslání mohli přistoupit, musíme zadat metodu, kterou se odešlou - v našem případě POST. A soubor kam se odešlou - pokud chceme současný tag action nespecifikujeme nebo jej nastavíme na "". Přidáme <input> tagy pro vkládání informací, <textarea> pro zprávu a tlačítko pro odeslání zprávy.
<form method="post">
Autor: <input type="text" name="autor" /><br />
Nadpis: <input type="text" name="nadpis" /><br />
Příspěvek: <textarea name="obsah" cols="50" rows="10"></textarea><br />
<input type="submit" name="odeslat" value="OK">
</form>
Zápis do souboru
Zpracování bude probíhat na začátku scriptu. Nejprve ověříme, zda uživatel stisknul tlačítko (v postu je input s názvem odeslat, který jsme si nastavili výše). Poté data zapíšeme do souboru pomocí fopen a fwrite. Nakonec přesměrujeme opět na diskuze.php, tím se ztratí data v POST, jinak by po stisknutí F5 došlo opět k odeslání toho samého příspěvku podruhé.
$file = "diskuze.txt";
if (isset($_POST['odeslat']))
{
$fo = fopen($file, "a");
if (fwrite($fo, '<p>Od: ' . htmlspecialchars($_POST['autor']) . '<br />Titulek: ' . htmlspecialchars($_POST['nadpis']) . '<br /><br>Napsal: ' . htmlspecialchars($_POST['obsah']) . '</p>'));
fclose($fo);
header('Location: diskuze.php');
exit;
}
Výpis diskuze
Ted potřebujeme vložit soubor do diskuze, to uděláme jednoduše pomocí readfile.
<h2>Diskuze:</h2>
<?php readfile($file); ?>
Celý zdrojový kód:
<?php
$file = "diskuze.txt";
if (isset($_POST['odeslat']) && ($_POST['kontrola'] == 2))
{
$fo = fopen($file, "a");
if (fwrite($fo, '<p>Od: ' . htmlspecialchars($_POST['autor']) . '<br />Titulek: ' . htmlspecialchars($_POST['nadpis']) . '<br /><br>Napsal: ' . htmlspecialchars($_POST['obsah']) . '</p>'));
$message = 'Příspěvek vložen';
fclose($fo);
exit;
}
else
$message = 'Špatný výsledek!';
?>
<h2>Diskuze:</h2>
<?php echo ($message); ?>
<form method="diskuze.php">
Autor: <input type="text" name="autor" /><br/>
Nadpis: <input type="text" name="nadpis" /><br/>
Příspěvek: <textarea name="obsah" cols="50" rows="10"></textarea><br/>
Vypočítej 1+1=<input type="text" name"kontrola" /><br/><!--kontrola před roboty -->
<input type="submit" name="odeslat">
</form>
<?php readfile($file); ?>
Také nezapomeňte vytvořit ve stejném adresáři soubor diskuze.txt nebo nastavit zápisová práva na 777!!! (jinak to nebudefungovat)


Tisk


) budeš určovat určítý
skill.
^^