• 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
93 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 Użytkownik (920 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 (454,680 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ź 93 wizyt
0 głosów
1 odpowiedź 57 wizyt
0 głosów
1 odpowiedź 56 wizyt
pytanie zadane 8 grudnia 2018 w C# i .NET przez DrajzleR Użytkownik (950 p.)
Porady nie od parady
Forum posiada swój własny chat IRC, dzięki któremu będziesz mógł po prostu pogadać z innymi Pasjonatami lub zapytać o jakiś problem. Podstrona z chatem znajduje się w menu pod ikoną człowieka w dymku.IRC

63,404 zapytań

109,670 odpowiedzi

229,145 komentarzy

44,693 pasjonatów

Przeglądających: 305
Pasjonatów: 18 Gości: 287

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.

...