Você está certo.
aspas mágicas não têm nada a ver com coisas sql e não devem ser conectadas a elas.
Porque aspas mágicas são um problema em todo o site e o escape de sql é apenas um problema relacionado a sql.
Portanto, eles precisam de tratamento diferenciado e nunca devem ser usados em conjunto.
Você tem que se livrar das citações mágicas incondicionalmente, porque isso estraga não apenas as coisas do SQL, mas toda a manipulação de dados do seu site.
Portanto, seria sensato colocar algum código stripslashes em qualquer arquivo de bootstrap a ser executado em cada chamada do script. O código você pode encontrar em várias implementações de tal código, basta pesquisar no google pela função 'stripslashes_deep'.
Seria sensato ter esse código sempre executado (claro sob a condição de verificação get_magic_quotes_gpc()) apesar do estado real das aspas mágicas, apenas por uma questão de compatibilidade.
Mas existe outra possibilidade de desativá-los:tente criar um arquivo php.ini na raiz da sua aplicação.
No entanto, há um erro grave em seu código. Na verdade, ele não protege nada.
Você está escapando de
$memberid
e $postid
mas não os cite! . Assim, não há proteção alguma. Só porque o escape funciona apenas quando usado com aspas. Por favor lembre-se:
Escape não é sinônimo de segurança!
Escapar sozinho não pode ajudar em nada. Há todo um conjunto de regras a serem seguidas.
Eu escrevi uma explicação decente recentemente, então não me repetiria:Substituindo funções mysql_* por PDO e instruções preparadas