Autor | Zpráva | ||
---|---|---|---|
noko Profil |
#1 · Zasláno: 8. 5. 2015, 09:47:11
Dobrý den
potřebuji pomoct, nevím jak udělat návštěvní knihu nebo komentáře bez databáze nejlepší by to bylo v js. nevíte někdo? díky předem za odpovědi. |
||
sitole Profil |
Odepisuji noko..
Ahoj JS vůbec nepotřebuješ. Stačí pouze Hledat. Věci jako komentáře se dělají pomocí PHP. Tady jsem ti našel Definici JS. "Jsou jím obvykle ovládány různé interaktivní prvky GUI (tlačítka, textová políčka) nebo tvořeny animace a efekty obrázků." Komentáře se zapisují do textového souboru. (Doporučuji ošetřit proti vkládání kodu.) Komentáře se zapisují do log.txt. (Můžete případně přenastavit) <?php $delimeter="/*f1f*\\"; // delimeter můžeš ponechat $cesta_souboru="log.txt"; // cesta k souboru TXT, do kterého se budou daný komentáře ukládat $umisteni_scriptu=""; //umístění tohoto souboru if(isset($_POST['komentar'])){ //pokud kliknou na odeslat tak se to začne zpracovávat if(!in_array("",array($_POST['jmeno'],$_POST['email'],$_POST['text']))){ //zkontroluje, zda vyplnili všechny položky $soubor=file_get_contents($cesta_souboru); // načtu si soubor s předchozíma komentářema $zapis=$soubor."\n".$_POST['jmeno'].$delimeter.$_POST['email'].$delimeter.str_replace(PHP_EOL, '<br>', $_POST['text']); file_put_contents($cesta_souboru, $zapis); //přepíšu soubor } else { echo "<b>Nemáte zadané všechny hodnoty.</b><br>"; // Pokud nejsou zadané všechny hodnoty, vypíše to tuto hlášku. } } $komentare=file_get_contents($cesta_souboru); // načtení souboru do proměnné $rozdeleni_radky=explode("\n",$komentare); // rozdělení dle řádků => na jednotlivé příspěvky if(count($rozdeleni_radky)!=0){ // pokud je v něm víc jak jeden komentář for($i=0;$i<count($rozdeleni_radky);$i++){ // cyklus, pro všechny komentáře $roztrzeni=explode($delimeter,$rozdeleni_radky[$i]); // roztržení dle delimetru $koment=array("jmeno" => $roztrzeni[0] , "email" => $roztrzeni[1], "text" => $roztrzeni[2]); // pro hezčí vypisování přidáno do array echo "<b>".$koment['jmeno']."</b><br>"; // jednoduché vypsání echo "".$koment['email']."<br>"; echo "".$koment['text'].""; echo "</br>"; } } else { echo "Nebyl zatím zadán žádný komentář"; // vypsání hlášky, že zatím nebyl zadán žádný komentář } ?> <form method="POST"> <input type="text" value="Jmeno" name="jmeno"><br> <input type="email" value="Email" name="email"><br> <textarea name="text"></textarea><br> <input type="submit" value="Odeslat" name="komentar"> </form> |
||
Marschmallow Profil |
noko:
Můžeš použít i můj starší skript: tomasjares.com/projekty/komentare.zip. Jelikož jsem to psal už dávno, tak jsem ještě neuměl pořádně zaheslovat administraci... |
||
sitole Profil |
#4 · Zasláno: 8. 5. 2015, 11:19:20
Marschmallow:
Ahoj, já to nepotřebuji. Dokáži si napsat vlastní "systém" pro komentáře. Btw: Odkaz ti nefunguje. |
||
noko Profil |
#5 · Zasláno: 8. 5. 2015, 13:19:15
[#2] sitole
Díky moc už mi to funguje! |
||
Jan Kozák Profil |
#6 · Zasláno: 10. 5. 2015, 21:32:37
Že Marschmallow odkazuje na odpad, už dávno víme, protože jsem mu příspěvky s odkazy na jeho rádoby skripty z Diskuse mazal, ale k tvému systému, sitole, bych měl pár poznámek:
- Již jsem tě upozorňoval, že ty prázdné řetězce ve skriptu jen ruší. - Značka </br> neukončuje znak konce řádku, ač by se to tak mohlo zdát.
- Není mi jasné, co udělá například tato část: echo "Nebyl zatím zadán žádný komentář"; // vypsání hlášky, že zatím nebyl zadán žádný komentář Nemohl bys třeba vysvětlit do textu, co ten příkaz má vlastně dělat? :)
Jsem rád, že se snažíš pomoci, ale nepředávej ostatním své zlozvyky, naopak se jich aktivně snaž zbavit. Pokud k obsahu souboru pouze něco přidáváš, je neefektivní celý obsah načítat do paměti, kousek přidat a pak to celé znovu ukládat. U funkce file_put_contents lze jako 3. parametr zadat příznak FILE_APPEND . Pokud je soubor větší, můžeš takto výrazně ušetřit RAMku. Také se tím omezí prodleva mezi načtením souboru a jeho uložením, během které může soubor načíst jiný uživatel, vinou čehož přijdeš o jeden příspěvek. (Uživatel A načte obsah, uživatel B načte obsah, uživatel A připojí svůj komentář a uloží soubor, uživatel B připojí komentář k obsahu načtenému ve své paměti a uloží, komentář uživatele A bude přepsán, zmizí.)
|
||
sitole Profil |
|||
Keeehi Profil |
#8 · Zasláno: 11. 5. 2015, 00:46:26
sitole:
Jan Kozák toho napsal dost ale ne všechno. Tak já doplním další problémy. - když ti do jména propašuji znak nového řádku (což je velmi jednoduché), rozbiju ti tím tvůj script a ten začne tvořit undefined index chyby. - pokud do komentáře napíšu /*f1f*\ tak vše co bude za tím nebude nikdy zobrazeno
- no a asi ten nejzávažnější problém je, že umožňuje perzistentní XSS útok což je velmi závažný problém. Takže zkus prosím příště radit tak, aby jsi neublížoval ostatním. Pokud noko ten tvůj kód použil a jelikož mu "funguje" tak už se do tohoto vlákna třeba nevrátí, tak se nedozví o problémech dříve, než mu na webu někdo způsobí bordel. A to už je pozdě. Nedat žádnou radu je mnohdy lepší než dát napůl dobrou radu. Tak prosím příště před posláním nějakého kódu zvaž, zda nemůže náhodou nadělat více škody než užitku. Pokud víš, že ten kód není bezpečný, protože se jedná jen třeba o kostru ilustrující možné řešení a zabývání se bezpečností by akorát odvádělo pozornost, tak na to vždy upozorní! |
||
sitole Profil |
#9 · Zasláno: 11. 5. 2015, 06:58:22
Keeehi:
O této chybě jsem napsal.. (Chyba bezpečnosti) Napsal jsem, že jde pouze o surový kod bez záruky bezpečí! |
||
Časová prodleva: 3 dny
|
|||
noko Profil |
#10 · Zasláno: 14. 5. 2015, 15:01:15
Keeehi:
Nevadí už jsem si napsal svůj. |
||
Časová prodleva: 9 let
|
0