Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> mysql_real_escape_string oraz cudzysłów dla inputa
Vasquez21
post
Post #1





Grupa: Zarejestrowani
Postów: 213
Pomógł: 0
Dołączył: 2.11.2004
Skąd: Jaworzno

Ostrzeżenie: (0%)
-----


Witam,

Ostatnio troszkę przerabiałem sobie operacje na bazie i pododawałem przed wrzuceniem wartości do bazy mysql_real_escape_string.
Wszystko jest ok do chwili kiedy chcę podstawić do value w input jakąś wartość z cudzysłowem.
Owa wartość jest obcinana.
Kiedy normalnie wyświetlam wartość pojawia się wszystko poprawnie.

  1. <TD style="text-align:left;"><INPUT name="adres" maxlength="100" size="100" value="<?=$adres['adres'];?>" /></TD>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




No nie, teraz już źle gadasz.
raz że mysql_escape_string nie powoduje zapisania do bazy slashy. Dzieję się tak tylko wtedy, gdy juz przeslashujesz tekst, który przepuszczasz przez mysql_escape_string, ale to nie jest wina tej funkcji ale już twoja.
dwa, że mysql_escape_string używamy, gdy wkładamy dane do bazy, zaś funkcje filtrujące typu htmlspiecialchars używa się raczej przed wyświetleniem użytkownikowi.
Jeśli ty mieszasz jedno z drugim, to nic dziwnego, że do bazy wpadają ci nadmiarowe slashe.
Go to the top of the page
+Quote Post
armon
post
Post #3





Grupa: Zarejestrowani
Postów: 66
Pomógł: 1
Dołączył: 24.09.2009

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 30.09.2011, 14:46:00 ) *
No nie, teraz już źle gadasz.
raz że mysql_escape_string nie powoduje zapisania do bazy slashy. Dzieję się tak tylko wtedy, gdy juz przeslashujesz tekst, który przepuszczasz przez mysql_escape_string, ale to nie jest wina tej funkcji ale już twoja.
dwa, że mysql_escape_string używamy, gdy wkładamy dane do bazy, zaś funkcje filtrujące typu htmlspiecialchars używa się raczej przed wyświetleniem użytkownikowi.
Jeśli ty mieszasz jedno z drugim, to nic dziwnego, że do bazy wpadają ci nadmiarowe slashe.

I z tego względu musisz napisać kod, lub też ogólną funkcję np. gdy tworzysz CMS (a po co? po to, żeby roboty sobie dokładać?):
  1. if(get_magic_quotes_gpc()) $_COOKIE[$key]=stripslashes($value);
  2. $_COOKIE[$key] = mysql_real_escape_string($value);


O sorry, ale chyba zapomniałeś o tym, że każdą daną możesz później wyświetlić np. login "Witaj $login", więc jeśli pozwolisz zapisać do bazy danych kod html, to później ktoś będzie formatował w ten sposób np. wygląd lub też może nawet wywołać jakąś funkcje, czy też skrypt JS.

filter_var załatwia sprawę od razu, nie musisz kombinować i zabezpiecza przed atakiem SQL injection i pozwala zapisywać wszelkie znaki bo i tak są zamieniane na encje HTML.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 00:33