O PHP fornece duas funções de referência mágica magic_quotes_gpc e magic_quotes_runtime que são convenientes para citarmos dados. Se essas duas funções estiverem definidas como ON no php.ini, elas encontrarão aspas simples ', aspas duplas " e barras invertidas para os dados que citamos. A linha é adicionada automaticamente com uma barra invertida para nos ajudar a traduzir automaticamente os símbolos e garantir a operação correta das operações de dados. No entanto, em diferentes versões do PHP ou em diferentes configurações de servidor, alguns magic_quotes_gpc e magic_quotes_runtime estão ativados e alguns estão ativados. . off, então o programa que escrevemos deve obedecer às condições on e off. Então, qual é a diferença entre as funções magic_quotes_gpc e magic_quotes_runtime Veja a seguinte descrição:
O escopo demagic_quotes_gpc
é: servidor cliente WEB;
Momento da ação: A solicitação é iniciada, por exemplo, quando o script é executado.
Magic_quotes_runtime
: dados lidos de um arquivo ou resultado da execução de exec() ou obtidos de uma consulta SQL;
Tempo de ação: toda vez que o script acessa dados gerados no estado de execução.
Portanto, o valor da configuração de magic_quotes_gpc afetará os dados obtidos por meio de Get/Post/Cookies; o valor da configuração de magic_quotes_runtime afetará os dados lidos do arquivo ou os dados obtidos da consulta ao banco de dados.
Exemplo:
<form action="" método="post" >
STR:<input type="text" name="str">
<tipo de entrada = "enviar">
</formulário>
<?php
/* Preenchemos o formulário: '" Esses símbolos, se magic_quotes_gpc não estiver ativado, então eles não serão escapados por barras invertidas*/
echo 'O valor passado pelo POST agora é:' ,$_POST['str'], '<br />';
if (get_magic_quotes_gpc()) { // Verifique se magic_quotes_gpc está ativado. Caso contrário, use addlashes para converter. justo
$str = $_POST['str'];
} outro {
$str = adiciona barras($_POST['str']);
}
echo 'Aqui está a versão com escape:' ,$str, '<hr />';
$sql = "INSERIR EM sobrenomes (sobrenome) VALUES ('$str')"
//============================== = ================================================ =======
//-----magic_quotes_gpc escapará apenas: dados www.devdao.com obtidos através de Get/Post/Cookies
//-----magic_quotes_runtime irá escapar: dados lidos de um arquivo ou o resultado da execução de exec() ou obtidos de uma consulta SQL
//============================================== =====================================
$data = implode(file('try.php')); // Ainda escrevemos os caracteres '" nele para teste
echo 'Aqui estão os dados do try.php,';
if (get_magic_quotes_runtime()) {
$dados = $dados;
echo 'escapou pelo sistema' .$data;
} outro {
echo 'escapou por addlashes' .$data = addlashes($data);
}
$sql = "INSERT INTO sobrenomes (sobrenome) VALUES ('$data')";
echo '<br />A instrução SQL é:<br />' ,$sql;
//---Tudo é escapado ao entrar no banco de dados, mas há barras invertidas extras. Quando quisermos ler os dados originais, use stripslashes() para remover as barras invertidas.
//---stripslashes() e addlashes() têm efeitos opostos
?>A diferença mais crítica são os dois pontos mencionados acima: eles têm como alvo diferentes objetos de processamento. O valor de configuração de magic_quotes_gpc afetará os dados obtidos por meio de Get/Post/Cookies. O valor de configuração de magic_quotes_runtime afetará a leitura dos dados. obtidos ou os dados obtidos da consulta ao banco de dados são mencionados aqui: set_magic_quotes_runtime(): Defina o valor magic_quotes_runtime 0=off. O estado padrão é fechado. ): Verifique o valor magic_quotes_gpc 0 = Fechar 1 = Abrir. 0=off. 1=on. Observe que não há função set_magic_quotes_gpc(), ou seja, o valor de magic_quotes_gpc não pode ser definido no programa.