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

VPS Starter Arubacloud
0 głosów
169 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 (599,730 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ź 348 wizyt
pytanie zadane 13 marca 2018 w PHP przez MiguelSantos Początkujący (270 p.)
0 głosów
1 odpowiedź 138 wizyt
pytanie zadane 18 stycznia 2019 w Java przez inf Nowicjusz (120 p.)
0 głosów
1 odpowiedź 176 wizyt
pytanie zadane 8 grudnia 2018 w C# przez DrajzleR Obywatel (1,380 p.)

92,455 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...