• 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]

Object Storage Arubacloud
0 głosów
178 wizyt
pytanie zadane 10 lutego 2018 w PHP przez shy_fox Gaduła (4,320 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,250 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 Guru (602,560 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ź 361 wizyt
pytanie zadane 13 marca 2018 w PHP przez MiguelSantos Początkujący (270 p.)
0 głosów
1 odpowiedź 152 wizyt
pytanie zadane 18 stycznia 2019 w Java przez inf Nowicjusz (120 p.)
0 głosów
1 odpowiedź 180 wizyt
pytanie zadane 8 grudnia 2018 w C# przez DrajzleR Obywatel (1,380 p.)

92,696 zapytań

141,607 odpowiedzi

320,114 komentarzy

62,056 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...