Zapis do bazy mysql. Wejście: & Wyjście: &

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
joka2
Nowy
Nowy
Posty: 62
Rejestracja: śr lis 15, 2006 5:02 pm
Kontakt:

Zapis do bazy mysql. Wejście: & Wyjście: &

Post autor: joka2 »

Niektóre dane,

które są dopisywane do mojej bazy za pomocą skryptu w PHP posiadają znaki "and":
Skrypt dopisujący do bazy posiada zabezpieczenie, które zmienia ciąg znaków (tekst w którym są zawarte znaki "and" oraz inne) na tekst. Wykonuje to funkcja: mysql_real_escape_string().

Efektem jest wyświetlanie na stronie, wcześniej wpisanych znaków, jako encje. Przykładowo wpisanie za pomocą skryptu znaku & zapisze się w bazie jako &.

Czy istnieje możliwość obejścia zamiany znaków "&" oraz innych, których lista znajduje się na stronie: http://htmlhelp.com/reference/html40/en ... ecial.html na encje?

pozdrawiam,
Marek
joka2
Nowy
Nowy
Posty: 62
Rejestracja: śr lis 15, 2006 5:02 pm
Kontakt:

Re: Zapis do bazy mysql. Wejście: & Wyjście: &

Post autor: joka2 »

Udało się!

Pytanie do bazy wygląda tak:

Kod: Zaznacz cały

$zapytanie="INSERT INTO `baza` (`data`, `opis`) VALUES ('".safe($obecna_data)."', '".safe($opis)."')";
safe() to funkcja, która dodaje znaki unikowe do łańcucha znaków unikowych, mając na uwadze aktualnie używany w połączeniu zestaw znaków. Tak przygotowanego łańcucha można bezpiecznie użyć w funkcji mysql_query() i wygląda tak:

Kod: Zaznacz cały

      function safe($value){
      return mysql_real_escape_string($value);
}
wystarczyło zmienić linnię w funkcji:

Kod: Zaznacz cały

return mysql_real_escape_string($value);
na:

Kod: Zaznacz cały

return str_replace('&', '&', mysql_real_escape_string($value));
Pozdrawiam,
Marek
ODPOWIEDZ