ITnetwork summer 2020 C# týden
30 % bodů zdarma na online výuku díky naší Slevové akci!
Pouze tento týden sleva až 80 % na e-learning týkající se C#

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ář:

Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

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)


 

Všechny články v sekci
Práce se soubory v PHP
Článek pro vás napsal jakub
Avatar
Jak se ti líbí článek?
2 hlasů
Autor se věnuje programování v HTML,CSS a nově i v jazyce LabView
Aktivity (1)

 

 

Komentáře

Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Daniel Vítek:12.6.2012 19:14

Se mi tam ukazuje jen ten poslední příspěvek..obsah toho diskuze.txt se přepisuje..co s tím ? :D

Odpovědět
12.6.2012 19:14
Na síti působím už pěknou řádku let. Pokud budeš něco potřebovat, písni mi, pokusím se ti poradit :)
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Daniel Vítek
David Čápka:12.6.2012 19:18

Zkus místo toho "w" dát "a"

... fopen($file, "a");
Odpovědět
12.6.2012 19:18
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na David Čápka
Daniel Vítek:12.6.2012 19:20

už to jde,dík ;)

Odpovědět
12.6.2012 19:20
Na síti působím už pěknou řádku let. Pokud budeš něco potřebovat, písni mi, pokusím se ti poradit :)
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Daniel Vítek:12.6.2012 20:26

Ještě jeden dotaz,když si tam chci přidat datum...

<?php

$file = "diskuze.txt";
$datum = StrFTime("%d/%m/%Y %H:%M:%S", Time());

echo ('
        <h2>Diskuze:</h2>
');

include($file);

if (isset($_POST['odeslat']))
{
        $fo = fopen($file, "a");

        if (fwrite($fo, '<p>____________________________________<br/> Od: ' . $_POST['autor'] . '<br>Titulek: ' . $_POST['nadpis'] . '<br><br>Napsal: ' . $_POST['obsah'] . '</p>'))
                echo ('');
        else
                echo ('');

        fclose($fo);
}
?>

Jak tam mám dát to $datum ?

Odpovědět
12.6.2012 20:26
Na síti působím už pěknou řádku let. Pokud budeš něco potřebovat, písni mi, pokusím se ti poradit :)
Avatar
Kit
Redaktor
Avatar
Kit:12.6.2012 20:30

Skript je samozřejmě nutné před použitím upravit, protože je zranitelný na XSS. Útočník může snadno převzít řízení nad obsahem webu.

Hlavně se nesmí použít funkce include(), ale ani bez ní to nebude bezpečné.

Odpovědět
12.6.2012 20:30
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Daniel Vítek
Daniel Vítek:12.6.2012 20:33

už nic,už sem na to přišel

Odpovědět
12.6.2012 20:33
Na síti působím už pěknou řádku let. Pokud budeš něco potřebovat, písni mi, pokusím se ti poradit :)
Avatar
albertpatera
Redaktor
Avatar
albertpatera:12.6.2012 21:35

ahoj takze kdyz si tohle nadefinuju, tak nemusim pouzivat zadnej jinej RSS?? diky

 
Odpovědět
12.6.2012 21:35
Avatar
Kit
Redaktor
Avatar
Odpovídá na albertpatera
Kit:12.6.2012 21:45

RSS je služba pro klienty, aby při každém refreshi nemuseli stahovat tuny grafiky, ale jen jeden poměrně krátký soubor.

Uvedený příklad je velmi špatně napsán. Může sloužit pro inspiraci, ale hlavně ho nekopíruj tak jak je.

Použití RSS doporučuji.

Odpovědět
12.6.2012 21:45
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:13.6.2012 7:35

David to už upravil, mělo by to být ok.

Odpovědět
13.6.2012 7:35
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
David Jančík
Tým ITnetwork
Avatar
Odpovídá na David Čápka
David Jančík:13.6.2012 8:06

Nevím hele. Pokud to chce někdo použít někde, tak to bude muset ještě hodně ošetřit. Na začátku to bylo strašný, teď je to alespoň pro vlastní účely použitelné.

Odpovědět
13.6.2012 8:06
Zapomeň, že je to nemožné a udělej to ;)
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:13.6.2012 12:48

Výměna include() za require() nepomůže. Pro tento účel se používá funkce readfile(), která je navíc rychlejší, protože ten soubor neparsuje.

Odpovědět
13.6.2012 12:48
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:13.6.2012 13:13

Nojo :D To je docela fail.

Odpovědět
13.6.2012 13:13
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:13.6.2012 13:15

Tak teď je to OK, dík ;)

Odpovědět
13.6.2012 13:15
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Daniel Vítek:16.6.2012 9:05

Dá se tam nějak řadit od nejnovějšího po nejstarší ? Teď to e přesně naopak..

Odpovědět
16.6.2012 9:05
Na síti působím už pěknou řádku let. Pokud budeš něco potřebovat, písni mi, pokusím se ti poradit :)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Daniel Vítek
Kit:16.6.2012 9:15

Ano, ale musí se na to jít jinak. Napsal jsem takovou miniaplikaci. V případě zájmu ji tady mohu vystavit.

Ovšem to se už blíží chvíle, kdy je databáze výhodnější. Zhruba od několika set až tisíc záznamů je DB prostě rychlejší.

Odpovědět
16.6.2012 9:15
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Kit
Daniel Vítek:16.6.2012 9:17

tj,jenže já databázi zkoušel,a na mě to bylo moc složitý..

Odpovědět
16.6.2012 9:17
Na síti působím už pěknou řádku let. Pokud budeš něco potřebovat, písni mi, pokusím se ti poradit :)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Daniel Vítek
Kit:16.6.2012 9:29

Jay Godse udělal docela zajímavý videoseriál o práci s databází. http://www.youtube.com/…Jaynonymous1

Včera jsem zkusil dělat s databází v Pythonu. Byla to taková trivka, že jsem nechápal.

Odpovědět
16.6.2012 9:29
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Kit
Daniel Vítek:16.6.2012 9:31

Mohl by si sem dát tu miniaplikaci ?? ;)

Odpovědět
16.6.2012 9:31
Na síti působím už pěknou řádku let. Pokud budeš něco potřebovat, písni mi, pokusím se ti poradit :)
Avatar
Kit
Redaktor
Avatar
Kit:16.6.2012 9:48

Byl to jen momentální nápad, ale funguje to. Zobrazuje jen posledních 50 příspěvků, ale po úpravě jich může zobrazovat víc nebo všechny.

Nedoporučuji pro dlouhý chat, ale spíš jen na diskuzi ke článku, protože po několika stech příspěvcích se aplikace začne zpomalovat.

Adresář "data" je nutné předem založit a přidělit mu vhodná práva pro zápis.

<?php
if(isset($_POST['Poznamka']) && $_POST['Poznamka']!='') {
        file_put_contents('data/diskuse.log',
                json_encode(array('Jmeno'=>$_POST['Jmeno'],'text'=>$_POST['Poznamka'])).PHP_EOL,
                        FILE_APPEND | LOCK_EX);
        header('Location: .');
        exit;
}

if(!is_array($pole[email protected]file('data/diskuse.log'))) $pole=array();
assert('is_array($pole);');
$out=array();
foreach(array_reverse(array_slice($pole,-50)) as $zaznam) {
        $z=json_decode($zaznam,TRUE);
        $out[]="<h3>".htmlspecialchars($z['Jmeno'])."</h3>\n<div>".
                nl2br(htmlspecialchars($z['text']))."</div>\n";
}
$texty=implode("\n",$out);

echo <<<EOT
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<form method="POST">
<div style="width:15em">Nick: <input type="text" name="Jmeno" size="30"></div>
<div style="width:15em">Příspěvek:</div>
<div><textarea name="Poznamka" rows="8" cols="72"></textarea></div>
<div><input type="Submit" value="Odeslat"></div>
</form>
$texty
</body></html>
EOT;
Odpovědět
16.6.2012 9:48
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Daniel Vítek
Kit:16.6.2012 11:58

A: Protože se to protiví způsobu, jakým lidé čtou.
Q: A proč je to špatné?
A: Zobrazování novinek nahoře.
Q: Co je nejhorší na internetových diskusích?

Odpovědět
16.6.2012 11:58
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Daniel Vítek:1.7.2012 19:23

v LAMPu mi to nejede...

Odpovědět
1.7.2012 19:23
Na síti působím už pěknou řádku let. Pokud budeš něco potřebovat, písni mi, pokusím se ti poradit :)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Daniel Vítek
Kit:1.7.2012 23:24

V LAMPu to jede, jen musíš adresáři 'data' dát práva 707 nebo použít FastCGI.

Odpovědět
1.7.2012 23:24
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Kit
Daniel Vítek:2.7.2012 5:52

zas ty práva :D

Odpovědět
2.7.2012 5:52
Na síti působím už pěknou řádku let. Pokud budeš něco potřebovat, písni mi, pokusím se ti poradit :)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Daniel Vítek
Kit:2.7.2012 6:36

V linuxových OS toho moc neuděláš, dokud se ta práva nenaučíš.

http://bit.ly/N3yLL2

Odpovědět
2.7.2012 6:36
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Frenzy
Člen
Avatar
Frenzy:10.9.2012 19:57

Čaute, dělám to přesně podle článku, ale po stisknutí odeslat se to zapíše jen do dizkuze.txt a nechce se to vypsat přímo na stránku, kde by mohla být chyba?? díky

 
Odpovědět
10.9.2012 19:57
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Frenzy
David Čápka:10.9.2012 20:00

No to nevím, výpis souboru dělá jediný příkaz readfile, tam se udělat chyba snad ani nedá.

Odpovědět
10.9.2012 20:00
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Frenzy
Člen
Avatar
Odpovídá na David Čápka
Frenzy:11.9.2012 17:11
<?php

$file = "diskuze.txt";

echo ('
        <h2>Diskuze:</h2>
                <br>
                <br>
');

readfile($file);

if (isset($_POST['odeslat']))
{
        $fo = fopen($file, "a");

        if (fwrite($fo, '<p>Od: ' . htmlspecialchars($_POST['jmeno']) . '<br>Titulek: ' . htmlspecialchars($_POST['nadpis']) . '<br><br>Napsal: ' . htmlspecialchars($_POST['text']) . '</p>'))
                echo("Příspěvek byl přidán.");
        else
                echo("Někde se stala chyba!");

        fclose($fo);
}


echo('
        <form method="post">
                jmeno: <input type="text" name="jmeno" /><br/>
                nadpis: <input type="text" name="nadpis" /><br/>
                text: <textarea name="text" cols="50" rows="10"></textarea><br/>
                <input type="submit" name="odeslat" value="Odeslat">
        </form>
');
?>

Tak kde mám teda chybu? Nechápu proč to nejde.

 
Odpovědět
11.9.2012 17:11
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Frenzy
David Čápka:11.9.2012 17:16

A kde ti to běží? Tohle musí fungovat. Udělej si samotný skript test.php a tam dej:

readfile("diskuze.txt");

Mělo by to diskuzi vypsat.

Odpovědět
11.9.2012 17:16
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Frenzy
Člen
Avatar
Frenzy:11.9.2012 17:26

Tak hosting mám teď na Endoře. OK zkusím ten test.

 
Odpovědět
11.9.2012 17:26
Avatar
Frenzy
Člen
Avatar
Frenzy:11.9.2012 17:39

Zjistil jsem, že když něco napíšu a odešlu tak se to zapíše do diskuze.txt, ale ne na tu stránku. A když napíšu něco dalšího a odešlu tak se vypíše to co bylo předtím na stránku a to nové se zase zapíše do diskuze.txt a tak pořád dokola.

 
Odpovědět
11.9.2012 17:39
Avatar
Frenzy
Člen
Avatar
Odpovídá na Frenzy
Frenzy:11.9.2012 19:16

Jak by se to dalo teda vyřešit?

 
Odpovědět
11.9.2012 19:16
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Frenzy
David Čápka:11.9.2012 19:28

Jo, to už zní logičtěji :) Jde. Ten kód mi přijde nějaký divný, zkus toto, kdyžtak to v článku upravím:

<?php

$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>'))
                echo("Obsah byl úspěšně zapsán,");
        else
                echo("Někde se stala chyba!");

        fclose($fo);
        header('Location: .');
        exit;
}


?>

<h2>Diskuze:</h2>
<?php readfile($file); ?>

<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">
</form>
Editováno 11.9.2012 19:41
Odpovědět
11.9.2012 19:28
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Frenzy
Kit:11.9.2012 19:32

Zkus přidat hned za volání funkce fclose() řádky

header('Location: .');
exit;

Často se na to zapomíná.

První echo a volání funkce readfile() je nutné přesunout až těsně před poslední echo.

Ten původní skript je dost zpřeházený, pořadí příkazů je dost důležité.

Odpovědět
11.9.2012 19:32
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:11.9.2012 19:40

Jo, to tam hodím, viz. můj příspěvek výše. To už je ok ne?

Odpovědět
11.9.2012 19:40
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Frenzy
Člen
Avatar
Frenzy:11.9.2012 20:57

Díky, už to funguje akorát se to po odesláni přehodí na index, jak to mám udělat aby to zůstalo na té diskuzi?

Editováno 11.9.2012 20:58
 
Odpovědět
11.9.2012 20:57
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:12.9.2012 8:57

Je to OK. Jen řádky

    echo("Obsah byl úspěšně zapsán,");
else
    echo("Někde se stala chyba!");

se staly zbytečnými, protože se nikdy neobjeví. Takže se to dá ještě zjednodušit.

Odpovědět
12.9.2012 8:57
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Frenzy
David Čápka:13.9.2012 13:02

Do toho location napiš místo tečky diskuze.php. Předělal jsem ten článek, mělo by to tam být funkční :)

Odpovědět
13.9.2012 13:02
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Frenzy
Člen
Avatar
Odpovídá na David Čápka
Frenzy:13.9.2012 16:02

Ok, díky

 
Odpovědět
13.9.2012 16:02
Avatar
jakub
Redaktor
Avatar
jakub:23.10.2012 7:53

Malinko sem to upravil,je tam kontrola proti robotům - mělo by to fungovat.

Odpovědět
23.10.2012 7:53
Uvnitř jsou všichni stejní...
Avatar
albertpatera
Redaktor
Avatar
albertpatera:10.12.2012 20:58

jak udělám to...aby nebylo možný odeslat prázdnej komentář? díky :D

 
Odpovědět
10.12.2012 20:58
Avatar
Luboš Běhounek Satik
Autoredaktor
Avatar
Odpovídá na albertpatera
Luboš Běhounek Satik:10.12.2012 21:07

Podminkou? :D

if ($_POST['obsah']!="")

Editováno 10.12.2012 21:07
Odpovědět
10.12.2012 21:07
https://www.facebook.com/peasantsandcastles/
Avatar
albertpatera
Redaktor
Avatar
Odpovídá na Luboš Běhounek Satik
albertpatera:10.12.2012 21:23
Editováno 10.12.2012 21:23
 
Odpovědět
10.12.2012 21:23
Avatar
albertpatera
Redaktor
Avatar
 
Odpovědět
10.12.2012 21:23
Avatar
albertpatera
Redaktor
Avatar
Odpovídá na Luboš Běhounek Satik
albertpatera:12.12.2012 17:17

chtěl bych se zeptat, jestli nejde nejakou podmínkou udělat, že by se diskuze každej 5 minut reloadovala..­.jestli to jede tak co zadám do

if ($_POST['obsah']!="")

místo 'obsah'? nebo to je jednoduší udělatpřes alert?? díky

 
Odpovědět
12.12.2012 17:17
Avatar
Luboš Běhounek Satik
Autoredaktor
Avatar
Luboš Běhounek Satik:12.12.2012 17:27

Na reload stranky kazdych 5 min ti php uz stacit nebude, budes muset pouzit javascript.
Reseni uz sem vypisovat nebudu, na internetu toho najdes hromadu: https://www.google.cz/search?…

Odpovědět
12.12.2012 17:27
https://www.facebook.com/peasantsandcastles/
Avatar
Kit
Redaktor
Avatar
Odpovídá na albertpatera
Kit:12.12.2012 17:31

HTML meta refresh.

Odpovědět
12.12.2012 17:31
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
albertpatera
Redaktor
Avatar
Odpovídá na Kit
albertpatera:12.12.2012 17:40

TO DAM DO JENOM DO <HEAD>?

<head> meta refresh </head>

? díky

 
Odpovědět
12.12.2012 17:40
Avatar
Kit
Redaktor
Avatar
Odpovědět
12.12.2012 17:55
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
albertpatera
Redaktor
Avatar
albertpatera:18.12.2012 17:25

jak mám dát do diskuze čas, kdy to bylo napsaný?

 
Odpovědět
18.12.2012 17:25
Avatar
Luboš Běhounek Satik
Autoredaktor
Avatar
Luboš Běhounek Satik:18.12.2012 17:29

v php casti za pomoci funkce date()
http://php.net/…ion.date.php

Odpovědět
18.12.2012 17:29
https://www.facebook.com/peasantsandcastles/
Avatar
albertpatera
Redaktor
Avatar
albertpatera:18.12.2012 17:35

diky

 
Odpovědět
18.12.2012 17:35
Avatar
albertpatera
Redaktor
Avatar
albertpatera:19.12.2012 20:34

jdou nějak udělat skilly, že by za určitý počet článů měl uživatel větší skill?

Editováno 19.12.2012 20:36
 
Odpovědět
19.12.2012 20:34
Avatar
jakub
Redaktor
Avatar
Odpovídá na albertpatera
jakub:23.12.2012 17:32

Ano jdou.
Ke každému uživateli si budeš psát jeho počet příspěvků,poté jednoduše pomocí case nebo něčeho jinýho(teĎ nwm přesně :D) budeš určovat určítý skill.

Odpovědět
23.12.2012 17:32
Uvnitř jsou všichni stejní...
Avatar
albertpatera
Redaktor
Avatar
albertpatera:24.12.2012 9:42

ok dík

 
Odpovědět
24.12.2012 9:42
Avatar
Honza Bittner
Šupák
Avatar
Honza Bittner:14.1.2013 19:55

doporučil bych místo

<?php readfile($file); ?>

toto

<?php    if(file_exists($file))
        include($file);
        else { echo ($message); } ?>

vypíše se to jen když bude soubor existovat jinak to napíše soubor neodeslán ..
tudíž se může pole pro oznámení odeslání vypustit ...
(avšak někdy to nemusí být vhodné ..)

Odpovědět
14.1.2013 19:55
Student FIT ČVUT. In love with Flutter. :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://g...
Avatar
Honza Bittner
Šupák
Avatar
Honza Bittner:14.1.2013 19:57

ještě bych se chtěl zeptat, jestli nevíte, proč se mi do toho diskuze.txt nechce nic uložit ... (diskuze se zobrazí(obsah diskuze.txt), ale nejde do něj ukládat)

kód :
http://prntscr.com/p62nz

Editováno 14.1.2013 20:00
Odpovědět
14.1.2013 19:57
Student FIT ČVUT. In love with Flutter. :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://g...
Avatar
Honza Bittner
Šupák
Avatar
Odpovídá na Honza Bittner
Honza Bittner:14.1.2013 20:01

oprava : (predchozi se nezobrazi?)
http://prntscr.com/p639t

Odpovědět
14.1.2013 20:01
Student FIT ČVUT. In love with Flutter. :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://g...
Avatar
Honza Bittner
Šupák
Avatar
Honza Bittner:16.1.2013 18:23

prosím o radu :) ^^

Odpovědět
16.1.2013 18:23
Student FIT ČVUT. In love with Flutter. :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://g...
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Honza Bittner
David Čápka:16.1.2013 18:56

A máš zapisovací práva? Ten skript tady by měl fungovat :)

Odpovědět
16.1.2013 18:56
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Honza Bittner
Šupák
Avatar
Odpovídá na David Čápka
Honza Bittner:16.1.2013 22:54

no ... zjistim to a kdyžtak napíšu :)

Odpovědět
16.1.2013 22:54
Student FIT ČVUT. In love with Flutter. :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://g...
Avatar
Kit
Redaktor
Avatar
Odpovídá na Honza Bittner
Kit:17.1.2013 8:39

Používat include místo readfile je hloupost kvůli zbytečnému zvýšení rizika XSS a zpomalení zpracování.

Odpovědět
17.1.2013 8:39
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Tomáš
Neregistrovaný
Avatar
Tomáš:25.1.2014 15:03

Mně to prostě nejde, když dam odeslat zprávu, tak se mi nic nezobrazí a nic se mi do diskuse.txt neuloží. Všechno mám jak má být, ale ty zprávy se ne a ne zobrazit. Jsem úplný začátečník a vůbec se nevím rady. Prosím o radu jak to mám udělat :) předem díky...

 
Odpovědět
25.1.2014 15:03
Avatar
mkub
Redaktor
Avatar
Odpovídá na Tomáš
mkub:25.1.2014 15:33

skus otestovat, ci ti PHP parsuje...
vytvor si subor test.php s tymto obsahom:

<php
phpinfo();
?>

uloz ten subor do adresara, kam mas ulozene aj ostatne PHP subory,
browser nasmeruj na adresu svojho webservera
a ak sa ti nezobrazi informacia o PHP a zapnutych doplnkoch, tak je jasne, ze nemas rozbehane PHP v Apache

 
Odpovědět
25.1.2014 15:33
Avatar
jakub
Neregistrovaný
Avatar
Odpovídá na mkub
jakub:26.1.2014 12:23

Jak říkal mkub, poté zkus ještě nastavit zápisová práva na 777

 
Odpovědět
26.1.2014 12:23
Avatar
mkub
Redaktor
Avatar
mkub:27.1.2014 0:14

jakub, kto tu pisal o zapisovych pravach? a okrem toho, nikto taketo restriktivne prava nepouziva...

 
Odpovědět
27.1.2014 0:14
Avatar
jakub
Neregistrovaný
Avatar
jakub:28.1.2014 22:40


"jak říkal mkub(ci php parsuje), poté zkus ..."

 
Odpovědět
28.1.2014 22:40
Avatar
mkub
Redaktor
Avatar
Odpovídá na Tomáš
mkub:29.1.2014 2:19

zapisove prava nie je potrebne nastavit na 777, ale staci nastavit na 770 a nastavit vlastnika adresara na uzivatela pod ktorym bezi webovy server...
alebo este lepsie nastavit umask adresara na 007, cim sa automaticky nastavia prava na 770 pre novo vytvoreny subor a zabezpeci sa aj bezpecnost toho adresara...
ale vymazat ho moze iba root, nikto iny...

 
Odpovědět
29.1.2014 2:19
Avatar
iqbigbang
Člen
Avatar
iqbigbang:23.1.2016 19:42

chtěl jsem se zeptat...
Když budu zapisovat do souboru, který neexistuje, vygeneruje ho php automaticky?
Pokud ne, existuje metoda na jeho vytvoření?

Odpovědět
23.1.2016 19:42
Say me, why not?
Avatar
Tonda Kozák
Člen
Avatar
Odpovídá na iqbigbang
Tonda Kozák:23.1.2016 20:26

Když budeš zapisovat, tak ne. Ale před zápisem si ho musíš nejdříve otevřít (třeba funkcí fopen($soubor, $mod)).
A tahle funkce, když soubor neexistuje, ho vytvoří - většinou, záleží na druhém parametru.
http://php.net/…on.fopen.php

 
Odpovědět
23.1.2016 20:26
Avatar
Richard
Člen
Avatar
Odpovídá na Tonda Kozák
Richard:23.1.2016 20:43

raději touch()

Odpovědět
23.1.2016 20:43
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
Tonda Kozák
Člen
Avatar
Odpovídá na Richard
Tonda Kozák:23.1.2016 20:50

Proč? (Nevím, ptám se.)

iqbigbang chce do souboru zapisovat, před tím ho však musí otevřít. Proč je lepší použít touch() a pak fopen()?

 
Odpovědět
23.1.2016 20:50
Avatar
iqbigbang
Člen
Avatar
iqbigbang:24.1.2016 20:29

jak můžu přečíst obsah souboru aniž bych ho vypsal?

Odpovědět
24.1.2016 20:29
Say me, why not?
Avatar
Odpovídá na iqbigbang
Neaktivní uživatel:24.1.2016 20:33

Použíj funkci file_get_contents :

<?php
$obsah = file_get_contents("Název souboru");
if ($obsah === false) {
    echo "Čtení souboru se nezdařilo";
    exit (1);
}
Odpovědět
24.1.2016 20:33
Neaktivní uživatelský účet
Avatar
David Hynek
Redaktor
Avatar
David Hynek:24.1.2016 21:59

SQLite ne skoro jako databáze, doporučuji...

Odpovědět
24.1.2016 21:59
Čím víc vím, tím víc věcí nevím.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 74 zpráv z 74.