Masz rację.
Magiczne cudzysłowy nie mają nic wspólnego z sql i nie powinny być z nim połączone.
Ponieważ magiczne cudzysłowy to problem dotyczący całej witryny, a ucieczka z sql jest problemem związanym tylko z sql.
Dlatego wymagają innego leczenia i nigdy nie powinny być używane w połączeniu.
Musisz bezwarunkowo pozbyć się magicznych cudzysłowów, ponieważ psują one nie tylko SQL, ale każdą manipulację danymi na Twojej stronie.
Tak więc, rozsądnie byłoby umieścić trochę kodu z ukośnikami w dowolnym pliku startowym, który ma być uruchamiany przy każdym wywołaniu skryptu. Kod, który można znaleźć w wielu implementacjach takiego kodu, wystarczy wyszukać w Google funkcję 'stripslashes_deep'.
Byłoby mądrze mieć ten kod zawsze uruchamiany (oczywiście pod warunkiem sprawdzania get_magic_quotes_gpc()) pomimo aktualnego stanu magicznych cudzysłowów, tak ze względu na kompatybilność.
Istnieje jednak inna możliwość ich wyłączenia:spróbuj utworzyć plik php.ini w katalogu głównym aplikacji.
Jednak w twoim kodzie jest poważny błąd. W rzeczywistości niczego nie chroni.
Unikasz $memberid
i $postid
ale nie cytuj ich! . Tak więc w ogóle nie ma ochrony. Tylko dlatego, że ucieczka działa tylko w połączeniu z cytowaniem.
Proszę pamiętać:
Ucieczka nie jest synonimem bezpieczeństwa!
Samotna ucieczka nic nie pomoże. Istnieje cały zestaw zasad, których należy przestrzegać.
Niedawno napisałem przyzwoite wyjaśnienie, więc nie powtarzałbym się:Zastąpienie funkcji mysql_* PDO i przygotowanymi instrukcjami