Autor Zpráva
george
Profil *
Chci se zeptat, jak na tomto diskuzním fóru funguje formátování textu zapsaného přes textarea ve formuláři? Text je společně s formátovacími značkami vložen do databáze a pak při výstupu je celý řetězec "prohnán" nějakou PHP funkcí, která zjistí výskyt těchto značek a podle nich ve výsledku text zformátuje pomocí HTML tagů? Pokud tomu tak je, proč se pomocí JS vkládají značky v hranatých závorkách a ne rovnou HTML tagy?
Atatürk
Profil *
....protoze v <tedlech> zavorkach se neda omezit co se muze pouzit a co ne (tedy bylo by to slozite) a kdyby nekdo vlozil treba <div> nebo <table> o velikych rozmerech, nadal by paseku....kdezto v [ ] se daji omezit treba jen na IMG URL CODE...a ty dalsi zakladni....zbytek proste nefunguje
Casero
Profil
george
aby byly ty znaky omezeny...a nemoh by sem někdo bvložit meta tag refresh , a už by byl člověk přesměrován...nebo chybovou hlášku alert...jak by to tu pak vypadalo??
Casero
Profil
Atatürk
:D sakra, zas jednou pozdě
george
Profil *
Jak logické... člověk přemýšlí nad různými složitostmi a natakovou základní věc nepřijde :o) Díky. A běžně se používá formátování textu (myslím tím převod značek [] na HTML tagy) před uložením do databáze nebo až na výstupu z ní?
Atatürk
Profil *
takhle vypada skryptik na ten prevod.....
<?php

/*
This file is part of miniBB. miniBB is free discussion forums/message board software, without any warranty. See COPYING file for more details. Copyright (C) 2004 Paul Puzyrev, Sergei Larionov. www.minibb.net
*/

$imgsWidth=150; //static width for shrinking images

function enCodeBB($msg,$admin) {

$pattern=array(); $replacement=array();

$pattern[]="/\[url[=]?\](.+?)\[\/url\]/i";
$replacement[]="<a href=\"\\1\" target=\"_blank\" rel=\"nofollow\">\\1</a>";

$pattern[]="/\[url=((f|ht)tp[s]?:\/\/[^<> \n]+?)\](.*?)\[\/url\]/i";
$replacement[]="<a href=\"\\1\" target=\"_blank\" rel=\"nofollow\">\\3</a>";

/* New [IMG] tag code - with fixed width */
$pattern[]="/\[imgs(left|right)?\](http:\/\/([^<> \n]+?)\.?(gif|jpg|jpeg|png)?)\[\/imgs\]/i";
$replacement[]='<a href="\\2" target="_blank" rel="nofollow"><img src="\\2" border="0" align="\\1" alt="" width='.$GLOBALS['imgsWidth'].'></a>';

/* Old [IMG] tag code - without fixed width. */
$pattern[]="/\[img(left|right)?\](http:\/\/([^<> \n]+?)\.?(gif|jpg|jpeg|png)?)\[\/img\]/i";
$replacement[]='<img src="\\2" border="0" align="\\1" alt="">';

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

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

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

if($admin==1) {

$pattern[]="/\[font(#[A-F0-9]{6})\](.+?)\[\/font\]/is";
$replacement[]='<font color="\\1">\\2</font>';

}

$msg=preg_replace($pattern, $replacement, $msg);

if(preg_match_all('/\{ \[ \}code\{ \] \}(.+?)\{ \[ \}\/code\{ \] \}/is',$msg,$replacementI)){

function code_unprotect($val){
if(get_magic_quotes_gpc()==1) $val=stripslashes($val);
$val=str_replace("{ : }",":",$val);
$val=str_replace("{ ; }",";",$val);
$val=str_replace("{ [ }","[",$val);
$val=str_replace("{ ] }","]",$val);
$val=str_replace(array("\n\r","\r\n"),"\r",$val);
if(get_magic_quotes_gpc()==1) $val=addslashes($val);
return $val;
}

foreach($replacementI[0] as $val) $msg=str_replace($val,code_unprotect($val),$msg);
}

$pattern=array(); $replacement=array();
$pattern[]="/\[code\](.+?)\[\/code\]/is";
$replacement[]='<div class="jscript"><pre>\\1</pre></div>';
$msg=preg_replace($pattern, $replacement, $msg);

if(substr_count($msg,'<img')>0) $msg=str_replace('align=""', '', $msg);
if(substr_count($msg,'"nofollow"></a>')>0) $msg=str_replace('"nofollow"></a>', '"nofollow">URL</a>', $msg);

return $msg;
}

//--------------->
function deCodeBB($msg) {

$pattern=array(); $replacement=array();
$pattern[]='/<div class="jscript"><pre>(.+?)<\/pre><\/div>/is';
$replacement[]="[code]\\1[/code]";

/* New [IMGs] tag code - with fixed width */
$pattern[]="/<a href=\"([^<>\n\r ]+?)\" target=\"_blank\" rel=\"nofollow\">[ ]<img src=\"(.+?)\" border=\"0\" (align=\"(left|right)?\")? alt=\"\" width=[0-9]+><\/a>/i";
$replacement[]="[imgs\\4]\\2[/imgs]";

/* Old [IMG] tag code - without fixed width. */
$pattern[]="/<img src=\"(.+?)\" border=\"0\" (align=\"(left|right)?\")? alt=\"\">/i";
$replacement[]="[img\\3]\\1[/img]";

$pattern[]="/<a href=\"([^<>\n\r ]+?)\" target=\"(_new|_blank)\"( rel=\"nofollow\")?>(.+?)<\/a>/i";
$replacement[]="[url=\\1]\\4[/url]";

$pattern[]="/<[bB]>(.+?)<\/[bB]>/s";
$replacement[]="\\1";

$pattern[]="/<[iI]>(.+?)<\/[iI]>/s";
$replacement[]="\\1";

$pattern[]="/<[uU]>(.+?)<\/[uU]>/s";
$replacement[]="[u]\\1[/u]";

$pattern[]="/<font color=\"(#[A-F0-9]{6})\">(.+?)<\/font>/is";
$replacement[]='[font\\1]\\2[/font]';

$msg=preg_replace($pattern, $replacement, $msg);
$msg=str_replace ('<br>', "\n", $msg);
if(substr_count($msg, '[img\\2]')>0) $msg=str_replace('[img\\2]', '[img]', $msg);

if(function_exists('smileThis')) $msg=smileThis(FALSE,TRUE,$msg);

return $msg;
}

?>
Casero
Profil
george
já to předělávám až po výběru z ní...nevím, jak je to tady
Atatürk
Profil *
...ja bych rekl ze je to celkem jedno...v databazi to paseku nenadela
simka00
Profil
george
lepší je to před uložením do databáze. kdyby se to dělalo až po vybrání, trvalo by to při velkém množství textu dlouho
george
Profil *
simka00
jo to je možné... děkuji
24k
Profil *
Larionov se dal po NHL na programovani? :-D
george
Profil *
Ještě mě napadlo. Takže tyto znaky <> vlastně musí být zakázány? Aby se nedaly přes formulář vložit nežádoucí HTML tagy. Tudíž by měl být asi každý formulář proti tomu nějak zabezpečen, jinak toho může někdo snadno zneužít...
djlj
Profil
george
Stačí použít htmlspecialchars().
Toto téma je uzamčeno. Odpověď nelze zaslat.

0