Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP] HTML w tekście
Forum PHP.pl > Forum > Przedszkole
teez
Cześć. Nie wiem zbytnio jak zatytułować temat, pod jaką frazą wyszukać w google.. Przejdę do rzeczy, mam tabelę z news'ami, a w niej oczywiście kolumnę z tekstem. Chcę zostawić możliwość korzystania z HTML, ale nie wiem w jaki sposób ograniczyć aby ludzie nie wpisywali zbyt dużej ilości </div> tym samym rozwalając szablon.
b4rt3kk
Najlepiej w ogóle ograniczyć możliwość korzystania z DIV. W to miejsce daj im inny element blokowy, np. P, jeśli już tak bardzo się upierasz przy HTML. Ja bym radził użycie BB CODE w to miejsce. A tak w ogóle to daj adres strony, bo nie do końca wiem o czym mówisz. Ludzie mogą dodawać swoje newsy?
teez
Dałem na przykładnie. Nie mam adresu, bo tworzę ją na localu.

Dokładniej - ludzie mogą tworzyć biografię danej osoby, a że w szablonie mam idealne klasy to aż żal nie skorzystać.
b4rt3kk
Tak jak mówiłem, zastąp HTML na BB code. Sprawdzaj czy liczba otwartych elementów równa się liczbie zamkniętych elementów i na odwrót, jeśli nie, to nie wyświetlaj, danego elementu. Zastąp sobie HTML-owy DIV np. znacznikiem [d][/d] wprowadzanym przez użytkownika. Chyba nie chcesz żeby Ci ktoś XSS walnął?
teez
O XSS raczej się nie martwie. Działam na CodeIgniterz'e i mam włączone XXS Protection na post, get i cookie.

b4rt3kk
  1. $liczbaOtwartych = substr_count($text, '[d]');
  2. $liczbaZamknietych = substr_count($text, '[/d]');
  3.  
  4. if ($liczbaOtwartych != $liczbaZamknietych) {
  5. // opis ponizej
  6. }


Teraz jak już wiesz, że liczby te nie są sobie równe to masz dwa wyjścia. Albo powiesz użytkownikowi, że ma to poprawić, bo liczba tagów otwatych musi równać się liczbie tagów zamkniętych, albo poprawisz to za niego i usuniesz tyle otwartych, bądź zamkniętych tagów, ile jest nadmiarowo. Tyle że w drugim rozwiązaniu może się cały układ posypać - nie Twojej strony, a tekstu użytkownika, który przesyła.
teez
Zrobiłem to inaczej, po prostu podłożyłem np. [ code ] tekst [ / code ] pod <div class='pre'> tekst </div>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.