[php] htmlspecialchars() i nl2br() sie kloca

0

jest sobie jakas tam mozliwosc dodania textu na stronie przez uzytkownika. uzywam funkcji nl2br() by entery zamienily sie na < br >, a calosc wywalam na strone przez

echo htmlspecialchars($zmienna); 

jednak przez to na stronie pojawia sie "< br >" zamiast pisac w nastepnej linii. jak to ominac?

0

Funkcja

htmlspecialchars()

zmiena znaki HTML(takie jak <, > czy &), tak, aby wyświetlić czyli do na znaki specjalne, np. < - <
Umożliwia to przedstawienia kodu strony, a nie jej wykonanie.
Jeśli ty po psortu chcesz wyświetlic strone(nie kod) pomiń tą funkcję.

0

chodzi o to ze, zaluzmy ze mam ksiege gosci - i chce sie zabezpieczyc przed wprowadzeniem przez uzytkownika jakichs tagow html. dlatego nie moge ominac tej funkcji.

0

A to już inny problem.
Najlepiej po prostu wyrażeniem regularnym wyrzucić wszystkie texty typu <*>. W takich sprawach należy też przemysleć co blokować, bo jest tysiące możliwości, przełamania barier, żeby coś działało nie tak jak powinno.

Najprostszy przykłas:

eregi_replace('<[:alnum:]+>', '', $text);

Funkcja zmienia wszystkie wyrazy zawierające znaki alfanumeryczne pomiedzy <,> na pusta wartość, czyli nic :)

Zaczynam sie zastanwaić czy jest to temat do dyskusji teoretycznej czy przedstawiać praktykę.

0
echo nl2br(strip_tags($zmienna));

Takie cos usunie tagi, nastepnie zamieni zalamanie lini na < br / >

0

jednak przez to na stronie pojawia sie "< br >" zamiast pisac w nastepnej linii. jak to ominac?

zrób to w odwrotnej kolejności - nl2br(htmlspecialchars($whatever))

1 użytkowników online, w tym zalogowanych: 0, gości: 1