• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed PHP i SQL - wyświetlanie/przetwarzanie odpowiednich znaków [BBcode]

0 głosów
99 wizyt
pytanie zadane 10 lutego 2018 w PHP, Symfony, Zend przez shy_fox Gaduła (4,310 p.)
zamknięte 6 marca 2018 przez shy_fox
To tak, już zrobiłem: w ustawieniach zapisuje się tekst do profilu, znaki są zamieniane na encje i wsadzane do bazy aby uniknąć wstrzykiwania

Co chce zrobić: z bazy wyciągnąć zapisany z encjami tekst i cofnąć operacje encji [htmlentities()] a później, aby przeglądarka w tym tekscie wyświetlała wybrane fragmenty BBcode np. [b] bold [/b] a [size] juz nie.

 

Pomysł na rozwiązanie:

Po zapisaniu tekstu z encjami w bazie dać UPDATE zamieniające encje np. &lsqb na [ tylko jeśli między nimi jest jest np. tag B czyli %&lsqbB&rsqb%    jeśli ta metoda jest dobra, to jak złożyć zapytanie UPDATE aby zamienić tylko wybrany kawałek tekstu?

 

Lecz liczę na wasze inne rozwiązania, z góry dziękuje
komentarz zamknięcia: Udzielono odpowiedzi

2 odpowiedzi

0 głosów
odpowiedź 12 lutego 2018 przez Hysek Obywatel (1,040 p.)
edycja 12 lutego 2018 przez Hysek
$zmienna = 'ciąg znaków + + +';
str_replace("+","plus",$zmienna); //- w tym przypadku znak "+" zostanie zastąpiony wyrazem "plus"

 

str_replace() - wyrażenie regularne służy do zamiany, podmiany ciągu znaków wyrazów.

 

To znaczy teraz pobierasz zmienna przesłana od użytkownika filtrujesz i tak dalej.. i przed zapisem do bazy zapisujesz tak jak ma być

$zmienna = $_POST['zmienna']; // uznajmy ze juz zostalo przefiltrowane
str_replace("&lsqb","[",$zmienna);

i analogicznie dla drugiego "]" - (nawiasu) tak samo

 

0 głosów
odpowiedź 12 lutego 2018 przez Comandeer Mentor (461,620 p.)

Zamiana HTML na encje NIE CHRONI W ŻADEN SPOSÓB PRZED SQL INJECTION. Jedyna sensowna obrona to prepared statements. Kropka.

Z tego też powodu zapisywanie encji do bazy jest nieefektywne i o wiele wygodniej jest zapisać czysty HTML, a dopiero przy wyświetlaniu go odpowiednio przerobić.

Co do BBCode: nie myślałeś nad wykorzystaniem gotowego parsera?

Podobne pytania

0 głosów
1 odpowiedź 106 wizyt
0 głosów
1 odpowiedź 68 wizyt
0 głosów
1 odpowiedź 59 wizyt
pytanie zadane 8 grudnia 2018 w C# i .NET przez DrajzleR Obywatel (1,380 p.)
Porady nie od parady
Odznacz odpowiedź zieloną fajką, jeśli uważasz, że jest ona najlepsza ze wszystkich i umożliwiła ci rozwiązanie problemu.Najlepsza odpowiedź

66,379 zapytań

113,130 odpowiedzi

239,487 komentarzy

46,637 pasjonatów

Przeglądających: 330
Pasjonatów: 9 Gości: 321

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...