IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Diskusia v PHP bez použitia databázy

V predchádzajúcej lekcii, Práca so súbormi CSV v PHP , sme sa zoznámili s prácou so súbormi pomocou tzv. Resources, so súbormi CSV a naše znalosti sme využili v praktickom príklade.

Tento článok vám ukáže, ako realizovať veľmi jednoduchú diskusiu v PHP bez použitia databázy. To môže byť výhodné najmä vtedy, keď s databázou ešte neviete pracovať.

Ako prvý si vytvoríme nový PHP súbor, v našom prípade diskuze.php.

Formulár:

Klasický formulár
, ktorým budeme odosielať dáta. Aby sme k nim po odoslaní mohli pristúpiť, musíme zadať metódu, ktorou sa odošlú - v našom prípade POST. A súbor kam sa odošlú - ak chceme súčasný tag action nešpecifikuje alebo ho nastavíme na "". Pridáme tagy pre vkladanie informácií,
<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 súboru

Spracovanie bude prebiehať na začiatku scriptu. Najprv overíme, či používateľ stláča tlačidlo (v poste je input s názvom odoslať, ktorý sme si nastavili vyššie). Potom dáta zapíšeme do súboru pomocou fopen a fwrite. Nakoniec presmerujeme opäť na diskuze.php, tým sa stratí dáta v POST, inak by po stlačení F5 došlo opäť k odoslaniu toho istého príspevku druhýkrát.

$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 diskusia

Ted potrebujeme vložiť súbor do diskusie, to urobíme jednoducho pomocou 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); ?>

Tiež nezabudnite vytvoriť v rovnakom adresári súbor diskuze.txt alebo nastaviť zapisovať práva na 777 !!! (Inak to nebudefungovat)

V nasledujúcom cvičení, Riešené úlohy k 3.-4. lekciu práca so súbormi v PHP, si precvičíme nadobudnuté skúsenosti z predchádzajúcich lekcií.


 

Predchádzajúci článok
Práca so súbormi CSV v PHP
Všetky články v sekcii
Práca so súbormi v PHP
Preskočiť článok
(neodporúčame)
Riešené úlohy k 3.-4. lekciu práca so súbormi v PHP
Článok pre vás napísal Jakub Mudra
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se věnuje PHP, JS
Aktivity