Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> MySQL i slashe
Sil3nt
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 9.07.2008

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


Wykonuję zapytanie funkcją mysql_query i zauważyłęm dziwną rzecz:
die("[zapytanie"]); wypisuje:
Kod
INSERT INTO contact (date, ip, useragent, autor, temat, tresc, kontakt, new) VALUES (1215471280, '192.168.1.102', 'Opera/9.23 (Windows NT 6.0; U; pl)', 'asd', 'test\'a\"b/c\\d', 'dsfaeafe', '', 1)

wartość pola "temat" to htmlspecialchars($_POST['temat'],ENT_QUOTES); - jak widać są slashe przed speclajnymi znakami


natomiast po wykonaniu mysql_query("[zapytanie]") w phpadminie mam wpis:
Kod
11   1215471782   asd   test'a"b/c\d   dsfaeafe       192.168.1.102   Opera/9.23 (Windows NT 6.0; U; pl)   1



Gdzie się podziały moje slashe? Czy funkcja mysql_query automatycznie je usuwa i nie trzeba wywoływać stripslashes?
Serwer www to krasnal (magic_quotes domyślnie włączone).
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Slashy potrzebujesz TYLKO przy wkladaniu danych do bazki [a konkretniej, do zapytania]. Chcesz miec w tytule znak '\', to w zapytaniu eskejpujesz ["jak widać są slashe przed speclajnymi znakami"] go backslashem: '\\', i bazka wstawi sobie jednego backslasha do danych.
Wiec przy wyciaganiu danych stripslashesz NIE uzywasz.

Tak samo jak masz; echo "aa \\ bb"; ktore wypisze ci: 'aa \ bb'


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Sil3nt
post
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 9.07.2008

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


No, rozumiem że baza zamieni \' na ' i \\ na \ ale w jednym miejscu jest \" a w rekordzie "

Ten post edytował Sil3nt 10.07.2008, 12:00:51
Go to the top of the page
+Quote Post
Shili
post
Post #4





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


bo & to też znak specjalny. Chcesz mieć \&, to musisz \& zamienić na \\&
Innymi słowy mysql traktuje ten znak jako już escapeowany, więc się nie kłopocze drugim escapeowaniem.
Go to the top of the page
+Quote Post
Sil3nt
post
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 9.07.2008

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


Dzięki za odpowiedź. 
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 19:03