Autor | Zpráva | ||
---|---|---|---|
BuGeR Profil |
#1 · Zasláno: 24. 5. 2012, 21:22:01
Zdravím,
možná, že se to už tady řešilo, ale nenašel jsem nic co by mi pomohlo (ani tady, ani na jiných webech). Mám formulář a hodnoty, které zadá uživatel převedu na JSON (pomocí json_encode), a uložím je do databáze. Potom ty hodnoty načtu z databáze a převedu je zpátky na array (pomocí json_decode).. Problém ale nastane, když uživatel zadá text s diakritikou - v tom případě se do databáze uloží něco takového "zkouu0161ka"(místo "zkouška"). Zkoušel jsem to různě filtrovat přes utf8_encode/utf8_decode, ale výsledek je pořád stejný. Poradíte mi co s tím? Budu vděčný za každou pomoc :-) Díky |
||
Jan Tvrdík Profil |
BuGeR:
V tom případě někde zahazuješ lomítka. Mělo by se to uložit jako zkou\u0161ka (U+0161 je kód pro š).
|
||
BuGeR Profil |
Jan Tvrdík:
V databázi mám právě zkouu0161ka, takže předpokládam, že se lomítka zahodí ještě někde před uložením, ale nevidím vůbec nikde kde. Vyberu si data z $_POST uložím je do proměnné $saver, a $saver potom uložím do databáze přes json_encode. Nikde neescapuju ani nic.. Nemůže to způsobovat databáze? Datový typ sloupce mám TEXT, a porovnání utf8_czech_ci.. |
||
Alphard Profil |
#4 · Zasláno: 24. 5. 2012, 22:02:19
To že nic neexcapujte neříkejte nahlas a hned to napravte. mysql_real_escape_string()
|
||
BuGeR Profil |
#5 · Zasláno: 24. 5. 2012, 22:07:01
Jan Tvrdík, Alphard:
Supr, díky, pomohlo escapovaní :-) |
||
Alphard Profil |
#6 · Zasláno: 24. 5. 2012, 22:17:29
BuGeR:
„Supr, díky, pomohlo escapovaní :-)“ Nesmějte se, escapování má být automatické a všude, nečekejte na problémy a ošetřete to hned. |
||
BuGeR Profil |
#7 · Zasláno: 24. 5. 2012, 22:23:05
Alphard:
Já nevěděl, jestli to vůbec takto pojede, a nevěděl jsem, že má escapování vliv na JSON. Jinak samozřejmě všechny vstupní data escapuju. |
||
Časová prodleva: 12 let
|
0