Citações mágicas são uma pergunta comum para PHPer. Sem querer vi um artigo hoje, combinado com o Manual do PHP e suas respostas, farei um resumo simples aqui.
Resumindo, as cotações mágicas escaparão automaticamente dos dados inseridos quando ativadas. Entre eles, todas as aspas simples ('), aspas duplas ("), barras invertidas e caracteres NULL serão escapados (uma barra invertida é adicionada). Na verdade, esta operação chama essencialmente a função de barras invertidas.
Por que usar aspas mágicas
Conveniente e rápido
Os designers do PHP imaginaram uma programação rápida e conveniente desde o início. Por exemplo, ao inserir em um banco de dados, as citações mágicas escaparão automaticamente dos dados, o que é muito conveniente.
Bom para iniciantes
As citações mágicas podem, até certo ponto, ajudar os iniciantes a evitar os riscos de segurança dos scripts. Por exemplo, em código sem quaisquer medidas de proteção, ativar aspas mágicas reduzirá muitos riscos, como problemas de injeção. É claro que usar apenas esse método não pode evitar completamente esses problemas de segurança.
"Não tenho permissão para fechá-lo"
Obviamente você pode estar ciente desse problema, mas o espaço do host não está totalmente sob seu controle.
Por que não usar citações mágicas
Portabilidade Esteja este recurso ativado ou não, ele afetará a portabilidade do script porque afeta nossas operações subsequentes de filtragem de dados.
Problemas de desempenho Todos os dados externos terão escape antes de serem recuperados, o que sem dúvida aumentará os custos de tempo de execução (e nem todos os dados precisam de escape).
Causando confusão Como mencionado acima, nem todos os dados precisam ser escapados. Uma situação que pode surgir é quando você utiliza a função stripslashes "louca" para obter dados sem escape.
PHP6 não é mais suportado
Os designers do PHP aparentemente perceberam seu "erro", então o descontinuaram no PHP6.
Como desativar as citações mágicas
Na minha opinião, é mais confiável usar o arquivo de configuração php.ini para desativar globalmente as citações mágicas. Consulte o código abaixo
; Citações mágicas;; Citações mágicas para dados GET/POST/Cookie recebidos.magic_quotes_gpc = Off; Citações mágicas no estilo Sybase (escape ' com '' em vez de ').magic_quotes_sybase = Off No entanto, o host online pode não permitir que você modifique o arquivo php.ini, então você pode usar o arquivo .htaccess para desativá-lo e adicionar o seguinte código
php_flag magic_quotes_gpc Off O acima pode Para código portado, os dados devem permanecer consistentes independentemente de magic_quotes estar desabilitado. Então o código a seguir pode ajudá-lo
<?phpif (get_magic_quotes_gpc()) {function stripslashes_deep($value) {$value = is_array($value) ?array_map('stripslashes_deep', $value) :stripslashes($value);return $ valor;}$_GET = array_map('stripslashes_deep', $_GET);$_POST = array_map('stripslashes_deep', $_POST);$_COOKIE = array_map('stripslashes_deep', $_COOKIE);$_REQUEST = array_map('stripslashes_deep' , $_REQUEST);}