Ryszard J.

Ryszard J. Informatyk,
wdrożeniowiec
oprogramowania,
szkoleniowiec

Temat: Ingerencja w tagi HTML zapisywane do bazy podczas...

Witam,

Do tabeli mam zapisywany kod HTML np:

<table border="1">....

W tabeli kod jest zapisywany bez zmian.

Po pobraniu z tabeli poleceniem SELECT - i to zarówno "z modelu" jak i zwyklym surowym SQL em usuwane są tagi HTML otrzymuje coś takiego:

<table border="1">

<tr>
<td>
<p style="color:red;">Nagłowek meila</p>
</td>
</tr>
</table>

Jak to obejść ?

Dzięki za wskazowki

konto usunięte

Temat: Ingerencja w tagi HTML zapisywane do bazy podczas...

Poczytaj o $sf_data->getRaw() ;)

Temat: Ingerencja w tagi HTML zapisywane do bazy podczas...

W trakcie przekazywania zmiennych z kontrolera do widoku są one automatycznie escapowane (chodzi o kwestie bezpieczeństwa, żeby nikt nie wstrzynkął np kodu javascript).

Co ważne, dotyczy to nie tylko zmiennych skalarnych, takich jak string, ale również tablic oraz obiektów.

W przypadku przekazania obiektu, zostanie on zastąpiony jego dekoratorem - sfOutputEscaperObjectDecorator. Wywoływania metod są przechwytywane, a ich wynik jest escapowany.

Analogicznie w przypadku tablic będziesz miał do czynienia z obiektem sfOutputEscaperObjectDecorator który "udaje" tablice (przez implementacje ArrayAccess) - przez to pewne funkcje tablicowe nie będą działać.

Jako ciekawostka - w Symfony2 mechanizm automatycznego escapowania został usunięty, ponieważ nie zawsze działał prawidłowo.
Adam W.

Adam W. senior php
developer, Symfony

Temat: Ingerencja w tagi HTML zapisywane do bazy podczas...

Michał Górny:
W trakcie przekazywania zmiennych z kontrolera do widoku są one automatycznie escapowane (chodzi o kwestie bezpieczeństwa, żeby nikt nie wstrzynkął np kodu javascript).

Co ważne, dotyczy to nie tylko zmiennych skalarnych, takich jak string, ale również tablic oraz obiektów.

W przypadku przekazania obiektu, zostanie on zastąpiony jego dekoratorem - sfOutputEscaperObjectDecorator. Wywoływania metod są przechwytywane, a ich wynik jest escapowany.

Analogicznie w przypadku tablic będziesz miał do czynienia z obiektem sfOutputEscaperObjectDecorator który "udaje" tablice (przez implementacje ArrayAccess) - przez to pewne funkcje tablicowe nie będą działać.

Jako ciekawostka - w Symfony2 mechanizm automatycznego escapowania został usunięty, ponieważ nie zawsze działał prawidłowo.

w symfony1.2 też nie był domyślnie włączony - trzeba było w setting włączyć. dopiero w 1.4 jest domyślny i trzeba używać ESC_RAW.

Następna dyskusja:

[SF 1.4, Doctrine] Problem ...




Wyślij zaproszenie do