Autor Zpráva
leorond
Profil
Ahoj, potřeboval bych nějak ochránit vstup a výstup do a z MySQL když používám tiny_mce. Mohl by jste mne někdo navést správným směrem?


Použil jsem htmlspecialchars a je to dobré ale i tak bych chtěl znát Váš názor.

Děkuji
anonymníí
Profil *
leorond:
Do MySQL(i) vždy mysql(i)_real_escape_string.
Taps
Profil
anonymníí:
vždy
v případě textových řetězců a tinymce ano.
anonymníí
Profil *
Taps:
Bavíme se o TinyMCE, že...? Chtělo by to lépe číst, než psát polovičaté reakce :-)
Trickle
Profil
přidám také jeden postřeh z TinyMCE v základu ti to třeba š překládá na html entity což by mohl být problém třeba pro vyhledávače.
a s htmlspecialchars mám problém snad všude... nikdy mi to nic nevypíše( žádný text).. jen v případě že mám v mysql vše převedené na html entity.
leorond
Profil
No výstup z MySQL jsem zkusil htmlspecialchars a celkem bez problémů a na vstup jsem použil real_escape_string.
Ano bavíme se o TinyMCE.
Ještě bych se zeptal, na nadpis který jsem nastavil pomocí CSS jsem použil klasický
<input type="text" name="nadpis" value="<? echo htmlspecialchars($row["nadpis"]);?>">
to proto jelikož v DB bude jen jeden řádek a budu ho chtít upravovat a na vstup jsem použil ještě strip_tags a real_escape_string ale potřeboval bych ještě vědět zda není potřeba zakázat nějaké znaky pro text v <textarea>.


Jelikož tam jsou povolené snad všechny znaky a nevím zda to není problém.
anonymníí
Profil *
Trickle:
Vyhledávače entitám samozřejmě rozumí. Kde jsi ten nesmysl vyčetl? Není to pravda, je to jen jiný způsob interpretace daného znaku.

Taps:
Hezky jsi doplnil svou odpověď, bez toho dovětku nedávala v dané situaci smysl, s dovětkem vypadá, jako bych byl pomatený já. Příště by se slušelo napsat ten edit trochu jasněji, aby bylo vidět, na co je reagováno.

leoreond:
Eh, jaký "nadpis, který jsem nastavil klasicky pomocí CSS"? Uvedený kód smozřejmě žádný nadpis není, je to textový input.

Jaké znaky bys chtěl v textarea zakazovat? A proč? Ať si uživatel zadá co chce, záleží pak na tobě, co budeš vypisovat a co ne. Co budeš interpretovat a co ne.
leorond
Profil
Omlouvám se trochu jsem to zkomolil, myslím to tak že v nadpisu bude pouze text a to jak bude vypadat je nastaveno stylem CSS.
Bavil jsem se o vstupu do DB.

To znamená že to odstraním až při výpisu ale není lepší aby se to vůbec do DB nedostalo? Nebude potom uživatel nemile překvapen že se mu vypíše jen část toho co napsal aniž by mu to třeba oznámilo že použil nepovolené znaky?
anonymníí
Profil *
leorond:
Pořád mluvíš o nepovolených znacích. Co a proč je nepovolený znak? Z jakého důvodu je nepovolený, když není při správném ošetření nijak nebezpečný?
leorond
Profil
Prostě bych tam ty znaky nechtěl ať už jsou nebo nejsou nebezpečné.

Ještě bych se chtěl zeptat když vypisuji článek napsaný v tinymce, jak mám výstup ošetřit aby se mi vypsal článek bez html značek jako je <b><p> a další? Pokud použiji htmlspecialchars tak se vypíše text tak jak jsem ho uložil do DB ale pokud to samé použiji na výpis do <textarea> kde ho zadávám tak se text zobrazuje správně.
Taps
Profil
leorond:
pro vypsání textu bez html použiji funkci strip_tags
leorond
Profil
Ano to vím ale to mi odstraní ty html značky nadobro, já chci aby se tučně ahoj vypsalo ahoj a ne <b>ahoj</b>
Fisir
Profil
Reaguji na leoronda:
V tom případě nepoužívej žádnou escapovací funkci.

Krátká nápověda:
• vkládám jakýkoli řetězec do databáze » mysqli_real_escape_string() / prepared statements
• vypisuji text vložený návštěvníky » htmlspecialchars()
• vypisuji svůj text, nad kterým mám kontrolu a chci, aby se HTML vykonalo » nic
• chci odstranit HTML značky » strip_tags()
leorond
Profil
Fisir: Děkuji, přesně to jsem potřeboval vědět. Nic méně co když bych napsal třeba toto?

<?php 
$result = mysql_query("SELECT * FROM news");
$row    = mysql_fetch_assoc($result);
{
    $text    = htmlspecialchars($row["text"]);
    $text    = $row["text"];
    {
        echo    "$text";
    }
}
?>

htmlspecialchars je tam asi zbytečně co?
anonymníí
Profil *
leorond:
Zbytečně je tam celý řádek č. 5, když proměnnou $text na dalším řádku přepisuješ. Ale to je základ PHP, doporučuji začít od základu, nebo se k základům vrátit, pokud si myslíš, že jsi už někde dál.


Co si slibuješ od těch dvou sad složených závorek také nevím, dále, i když bude tabulka obsahovat více řádků, vypíšeš jeden (poslední)... Uvozovky kolem proměnné jsou taky zbytečné na řádku 8.
leorond
Profil
Vím že ty závorky a uvozovky jsou tam zbytečné ale lépe se v tom vyznám, ničemu to neublíží ani nepomůže.
Jen jsem se na to chtěl zeptat, jelikož jsem to našel v jednom svém starém skriptu a nebyl jsem si už úplně jistý proč to tam vlastně je.


Ještě k těm uvozovkám, jsou hlavně proto že tam byla html tabulka a nějak jsem je zapomněl smazat když jsem mazal tabulku pro lepší přehlednost.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: