Autor Zpráva
Resigo
Profil *
Dobrý den, mám takový problém. Mám textareu, které měním value: (
document.getElementById('popis_hry').value='<?php echo ($popis); ?>'
). Jde o to že když do toho $popisu napíšu "uvozovky" nebo podobné znaky, které mění význam, tak mi to prostě nefunguje. Nevím co s tím, napadlo mě jen dát, že se uvozovky mění na jiný znak, ale nevím kolik jiných znaků by to ještě mohlo zkazit. Všem moc děkuji za pomoct.
Alphard
Profil
http://phpfashion.com/escapovani-definitivni-prirucka#toc-javascript-json
Resigo
Profil *
Alphard:
Promin, pořád to nějak nechápu. Nechápu jak nastavit htmlspecialchar­s aby mi to přepisovalo ty znaky? Promin nejsem moc chápavý, moc ti děkuju :)
Alphard
Profil
Ale v odkázaném odstavci se nikde nemluví o htmlspecialchars(). Je tam ukázka kompletního zápisu. Mělo by stačít použít tu jedinou funkci.
Resigo
Profil *
Alphard:
Jakou mám použít tu funkci? píše se tam „JavaScript zapsaný uvnitř HTML atributů (např. onclick) je nutné ještě escapovat podle HTML pravidel“ a tam je to htmlspecialchars(). Tak jak to tedy mám provést?
Alphard
Profil
Resigo:
Z vašeho kódu není patrné, v jakém dalším kontextu to máte.
Jestli je potřeba kombinovat obojí, tak
htmlspecialchars(json_encode((string) $s), ENT_QUOTES)
Resigo
Profil *
Alphard:
no mám tam
onclick="document.getElementById('popis_hry').value='<?php echo ($popis); ?>'"
. Proto tam nejde to
json_encode((string)
$s), protože to dá akorát před uvozovky \. A to
htmlspecialchars()
mi nějak nefunguje. Ale asi bude nejlepší zadat aby se " měnila třeba na ´. Nebo máš lepší řešení? :))
Resigo
Profil *
Už jsem to asi vyřešil, udělal jsem to prostě takhle:
$puvodni = array('"', "'"); 
$novy = array('´', "´");
popis = str_replace($puvodni, $novy, strip_tags($popis));
Alphard
Profil
Tak jste vyřešil uvozovky, snad vám to nerozbije něco jiného. Mnou odkázaný článek nelže, nevím, proč byl takový problém spojit dvě funkce.
Aleš Janda
Profil
Resigo:
Rozbije se to minimálně ještě u zpětného lomítka. Navíc znaky < a > takto nepůjdou použít.
Problém není v uvozovkách, ale v neescapování.
Chamurappi
Profil
Reaguji na Resiga:
asi bude nejlepší zadat aby se " měnila třeba na ´.
Ale to už pak nejsou ty samé uvozovky.


Reaguji na Aleše Jandu:
Navíc znaky < a > takto nepůjdou použít.
Uvnitř atributu klidně.
Anonym
Profil *
Chamurappi:
Vím že budou vypadat jinak, ale nevím jak to jinak vyřešit.
Když dám json_encode($popis) tak mi to nepomůže a když dám htmlspecialchars() jak jsem psal mi nefunguje, nevíte někdo proč?
Chamurappi
Profil
Reaguji na Resiga:
Děláš něco špatně. Radu jsi dostal a řekl bych, že správnou.
Anonym
Profil *
Chamurappi:
To já vím, ale nevím co asi prostě zakážu používání uvozovek a apostrofů :D
Aleš Janda
Profil
Anonym:
Viz Alphard.

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:

0