Autor | Zpráva | ||
---|---|---|---|
LukasCZ Profil |
#1 · Zasláno: 3. 11. 2006, 14:40:13
Zdravím,
potřeboval bych poradit, jak ochránit stránky, před vkládáním HTML tagů do formulářů / databáze... mám klasická pole, např, jméno, adresa - tam je nejlepší html tagy úplně vyřadit,... ale pak pole komentář (textarea) - kde bych chtěl html tagy vyřadit taky, ale chtěl bych poradit, jak tam zachovat řádkování entrem - jak se to dělá normálně ve formulářovém poli, nikoly vložením tagu <br> aby to při výpisu dobře vypadalo a dlouhý text zachovával řádkování. Díky za rady ! |
||
LukasCZ Profil |
#2 · Zasláno: 3. 11. 2006, 14:41:06
třeba tady to na diskuse.jakpsatweb.cz - tak bych chtěl aby to takhle fungovalo :-)
|
||
Anonymní Profil * |
#3 · Zasláno: 3. 11. 2006, 14:47:12
tak pomocí PHP a fce strtr tagy jednoduše odstraň a prozměnu hranatý závorky jako jsou tady můžeš nahradit... normálnim tagem. chápeš?
|
||
Anonymní Profil * |
#4 · Zasláno: 3. 11. 2006, 14:52:56
Pro ukázku:
<?php Možná je ještě něco jednodušího, ale tohle mi přijde už tak hodně jednoduchý... |
||
Anonymní Profil * |
#5 · Zasláno: 3. 11. 2006, 14:54:56
chybička se vloudila sem se prozměnu nedá napsatt hranatá zívorka, takže ještě jednou a místo hranatych tam dam složený...
<?php |
||
LukasCZ Profil |
#6 · Zasláno: 3. 11. 2006, 15:36:41
fajn, tím odstaraním html tagy a ještě mě zajímalo jak je to s řádkováním, jak se tam vloží enter... ve formulářovém poli, když tam udělám enter, tak se to pak v databázi nijak neprojeví, musel bych tam psát složitě <br> nevíte jak na to? Opět příkladem je toto pole na diskuse.jakpsatweb.cz - tady když udělám enter, tak se to pak ve výsledku, ve výpise projeví, ale u mých stránek ne...
|
||
Hooonza Profil * |
#7 · Zasláno: 3. 11. 2006, 16:12:09
A co třeba ereg_replace("\n", "<br>", trim($retezec)); ?
|
||
Anonymní Profil * |
#8 · Zasláno: 3. 11. 2006, 16:39:22
stačí třeba
$vzkaz=nl2br($vzkaz) |
||
LukasCZ Profil |
#9 · Zasláno: 3. 11. 2006, 16:53:18
no, nějak to nejde :(
na odstranění funkčnosti HTML tagů jsem použil funkci $text = htmlspecialchars($text); to funguje... dostanu čisté znaky co nic nedělají, ale pořád s tím řádkováním nevím... funkci ereg_replace() použít nemůžu, protože ta udělá z \n, <br> - při první vložení by to sice fungovalo, ale kdybych s tím chtěl pak dál pracovat, tak se mi do pole textarea vypíší znaky <br>, které se pak ale vloží znovu do textu - což už nechci ! zajímavé ale je... že když použiju funkci $text = htmlspecialchars($text); tak řádkování zůstává, ale projevuje se pouze v textarea... tj. <textarea>".$text."</textarea> - vypíše text s řádkováním a odstavci, ale když dám vypsat text mezi běžná data, třeba do <td>".$text."</td> - tak tam se řádkování už neprojevuje a píše to text za sebou... teda řádkuje to na konci, ale nedělá to ty odstavce co to dělá v textarea ! |
||
LukasCZ Profil |
#10 · Zasláno: 3. 11. 2006, 17:07:12
tak už vím jak na to :-)
máme proměnou z formuláře $text tu si převedeme aby nefungovaly HTML tagy pomocí $text = htmlspecialchars($text); vložíme do DTB. z databáze pro další úpravu můžeme použít do pole textarea jdnoduše <textarea>".$radek["text"]."</textarea> protože textarea zachovává řádkování \n ale když to chceme vložit do normálního textu - aby se zachovaly odstavce a řádkování. tak to převedeme $vypis_textu = ereg_replace("\n", "<br>", trim($radek["text"])); a pak už jen vložíme hotový text: <td>$vypis_textu</td> toť vše :-) |
||
VitaZ Profil |
#11 · Zasláno: 3. 11. 2006, 20:10:21
A co to třeba už před uložením udělat takhle?
$vzkaz=NL2BR(HTMLSpecialChars($vzkaz)); |
||
Pavel Strejček Profil |
#12 · Zasláno: 3. 11. 2006, 20:41:26
LukasCZ
htmlspecialchars($text, ENT_QUOTES); jinak se Ti může rozpadnout stránka až někdo zadá uvozovky |
||
loyza Profil * |
#13 · Zasláno: 4. 11. 2006, 07:39:46
NO tak takovýchhle řešení je spousta, ale asi nejlepší je využít nějakou naprogramovanou knihovnu, která tohle pořeší a navíc ji naprogramoval zkušený programátor, a je hodně používaná takže bude asi dobře vyladěná a nebude obsahovat příliš chyb. Třeba tuhle: http://texy.info/cs/
|
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0