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)
Galerie