Autor Zpráva
Simona K.
Profil *
Ahoj,

predem upozornuju, ze jsem tezka zacatecnice a dost casti kodu mi nekdo poradil. Nicmene ted, kdyz mam hotovou diskuzi, tak mam problem, ze kdyz odentruju v textovem poli, aby to vypadlo jako trochu esteticky lip... napr.

Zdravim,

jmenuji se Simona.

Ahoj

Tak se mi to potom zobrazi Zdravim, jmenuji se Simona. Ahoj...

... predpokladam, ze mi to nejak orezou ty funkce, co jsem k tomu dostala. Dokazete mi poradit, jak to udelat, aby bylo zachovano to radkovani? Dekuju

Simona

function prekodovat_formatovani($text) {

$vyraz=array();
$nahradit=array();

$vyraz[]="/\[[bB]\](.+?)\[\/[bB]\]/s";
$nahradit[]='<b>\\1</b>';

$vyraz[]="/\[[iI]\](.+?)\[\/[iI]\]/s";
$nahradit[]='<i>\\1</i>';

$vyraz[]="/\[[uU]\](.+?)\[\/[uU]\]/s";
$nahradit[]='<u>\\1</u>';

$text=preg_replace($vyraz, $nahradit, $text);
return $text;
}



Moderátor nightfish: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).


Moderátor nightfish: Tvůj projev je špatně srozumitelný, piš prosím s diakritikou.
nightfish
Profil
celý problém je v tom, že odřádkování v textarea je realizováno znakem \n, zatímco v HTML se odřádkování řeší pomocí <br>
řešením je na výstupu (při výpisu) nahradit \n za <br>, k čemuž slouží funkce nl2br()
Simona K.
Profil *
A jak by tedy mela vypadat ta ukladaci funkce? Mam to takto.. muzete to tam nejak zakomponovat?

function pridat(){
  global $_POST,$db_tab4,$pocet_znaku;
  $jmeno = htmlspecialchars($_POST[jmeno]);
  $vzkaz = htmlspecialchars($_POST[vzkaz]);
  $vzkaz = Trim($vzkaz);
  $vzkaz = strip_tags($vzkaz);
  $vzkaz = zkraceni_vzkazu($vzkaz,$pocet_znaku);
  $datum = $_POST[datum];
  
  $dotaz = MySQL_Query("INSERT INTO $db_tab4 VALUES('', '$datum', '$jmeno', '$vzkaz')");
  if(!$dotaz):
  echo "Vzkaz se bohuzel nepodarilo ulozit. Zkuste to jindy.";
  else:
  Header("Location: index.php", true, 303);  
  endif;
}



Moderátor nightfish: Tvůj projev je špatně srozumitelný, piš prosím s diakritikou.

Moderátor nightfish: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Simona K.
Profil *
... tak to dela to strip_tags... ale neni nebezpecne to vyhodit?

S.
nightfish
Profil
Simona K.:
A jak by tedy mela vypadat ta ukladaci funkce?
funkce na ukládání do databáze se měnit nemá, v předchozím příspěvku jsem psal o výstupu, čiliže o výpisu z databáze
ten by mohl vypadat třeba následovně:
echo nl2br(htmlspecialchars($vzkaz));
(proměnná $vzkaz obsahuje obsah sloupce se vzkazem, načteným z databáze)
Simona K.
Profil *
Takže mám špatně tu logiku? U diskuje je tedy lepší to ošetřit až při výpisu z databáze? Myslela jsem, že je to lepší ošetřit při ukládání

$vzkaz = htmlspecialchars($_POST[vzkaz]);
$vzkaz = Trim($vzkaz);
$vzkaz = strip_tags($vzkaz);
$vzkaz = zkraceni_vzkazu($vzkaz,$pocet_znaku);

A k té "nebezpecnosti". Jak potom ohlídám, aby mi třeba v přípspěvku 200x neodentrovali a nemela jsem ten vypis zdeformovany?
AM_
Profil
Simona K.:
U diskuje je tedy lepší to ošetřit až při výpisu z databáze?
Jednodušší na programování je ošetřit výstup až při výpisu (jednodušší dodatečné upravování příspěvků v DB atd.). Hodí se to při extrémně vytížené diskusi jako drobná optimalizace, ale to se většinou řeší tak, že se stejně ukládá neoescapovaná verze a oescapovaná v nějaké formě cache.

tak to dela to strip_tags... ale neni nebezpecne to vyhodit?
k ošetření výstupu do html slouží htmlspecialchars, k odstranění tagů z textu (což je jiná úloha!) slouží strip_tags.
Pokud návštěvník napíše do diskuse Ja, <SuperBorec>, prispivam do teto diskuse, je lepší, aby se zobrazilo Ja, , prispivam do teto diskuse, nebo Ja, <SuperBorec>, prispivam do teto diskuse?

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: