Strona 1 z 1

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

: wt gru 22, 2009 8:37 am
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

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

: czw gru 24, 2009 10:37 am
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