Autor Zpráva
Tommy4
Profil
Potřebuji ve své knize zakázat HTML tagy, ale aby tam šly smajlíci atd.
Kód knihy je zde: http://www.tommy4.ic.cz/upload/kniha.txt
Kód znám, ale nevím jak ho použít a kam ho použít... Byl bych rád, kdyby jste mi to vysvětlili, díky. $textem = HTMLSpecialChars($textem);
yFang
Profil
Tommy4
Tak dej nejdřív htmlspecialchars a až potom vyměň *xx* za smajlíky.
Tommy4
Profil
Když to dám před to, můžu si tam v pohodě vložit rámy... :-(
Taps
Profil
Tommy4
a co strip_tags s tím by to nešlo ?
Měsíček
Profil
Reaguji na uživatele Tommy4:

"Potřebuji ve své knize zakázat HTML tagy, ale aby tam šly smajlíci atd. "

Zakaž používání zobáčků < a > a nebo je nahraď (pomocí funkcí PHP, jaké to jsou na to zkus přijít sám). Smajlíky pomocí JS vkládej jako *něco* a pak pomocí PHP regulárním výrazem předělej na zobáček a vytvoř z toho <img>, tím ti budou fungovat smajlíky, ale nikdo nebude moci psát žádné tagy. Zkrátka zakážeš vpisování zobáčků do databáze/souboru .. nebude to moci dělat uživatel, ale jen PHP skript.
Joker
Profil
Tommy4
Když to dám před to, můžu si tam v pohodě vložit rámy... :-(
Jak?
Nejdřív se zruší veškeré HTML a potom se třeba :-), :-(, ;-) (atd.) nahradí odpovídajícím HTML kódem.
Tommy4
Profil
Taps
To bohužel neznám, PHP se teprve učím.

Měsíček
Zkusím zahledat na Googlu...

Joker
Tak jsem to myslím dělal...
Joker
Profil
Tommy4
Tak jsem to myslím dělal...
No tak to by mělo být úplně bez rizika, protože návštěvníkovi neumožníte jakkoliv ovlivnit výsledný HTML kód, jen prostě smajlíka nahradíte natvrdo napsaným kódem.
Tommy4
Profil
Mám to takhle, asi někde bude chyba:

$textem = HTMLSpecialChars($textem);

$aa=MySQL_Query("SELECT * FROM kniha ORDER BY id DESC LIMIT $poz,$max");
echo mysql_error();
while ($bb=mysql_fetch_array($aa)){

$nahradit_co = array("*01*","*02*" ........atd........
krteczek
Profil
Tommy4: použij Texylu, text z formuláře prožen přes ni a nemusíš se starat o html ani smajlíky
#odstranění zpětných lomítek
removeMagicQuotesGpc();
$err = 0;
$errTxt = '';
$textTexy = '';
$textHtml = '';
if(odeslaný formulář)
{
  if((!empty($_POST['text'])) && (trim($_POST['text']) != ''))
  {
    $textTexy = htmlspecialchars($_POST['text']);
    $textHtml = texyla($_POST['text'], 'forum', 'utf-8');
  }
  if(empty($textTexy))
  {
    $err = 1;
    $errTxt .= '<p class="error">nevyplnili jste text zprávy, zprávu nelze uložit</p>';
  }

  # když se de ukládat do db tak se kontroluje $err
  if(empty($err))
  {
     $dotaz = "INSERT INTO ...
  }
}

a u výpisu se nemusíš starat o převádění smajlíků na html, nastavení 'forum' u Texyly je bezpečné právě pro takováto fora, knihy návštěv...
Tommy4
Profil
Díky všem za snahu, až teď jsem si uvědomil v čem je chyba. Místo: $textem = HTMLSpecialChars($textem); stačilo dát $text = HTMLSpecialChars($text);. :-D
Měsíček
Profil
Jestli to už jde můžeš locknout :)

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: