NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.

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

Program byl vytvořen v roce 2012.

 

Všechny články v sekci
Zdrojákoviště PHP - soubory
Program pro vás napsal Jakub Mudra
Avatar
Uživatelské hodnocení:
2 hlasů
Autor se věnuje PHP, JS
Aktivity