PHP proporciona dos funciones de referencia mágica magic_quotes_gpc y magic_quotes_runtime que nos resultan convenientes para citar datos. Si estas dos funciones están activadas en php.ini, encontrarán comillas simples ', comillas dobles " y barras invertidas para los datos que citamos. La línea se agrega automáticamente con una barra invertida para ayudarnos a traducir símbolos automáticamente y garantizar el funcionamiento correcto de las operaciones de datos. Sin embargo, en diferentes versiones de PHP o diferentes configuraciones de servidor, algunos magic_quotes_gpc y magic_quotes_runtime están activados, y otros están activados. . off, por lo que el programa que escribimos debe cumplir con las condiciones de encendido y apagado. Entonces, ¿cuál es la diferencia entre las funciones magic_quotes_gpc y magic_quotes_runtime? Consulte la siguiente descripción:
El alcance demagic_quotes_gpc
es: servidor cliente WEB;
Momento de la acción: la solicitud comienza, por ejemplo, cuando se ejecuta el script.
Magic_quotes_runtime
: datos leídos de un archivo o el resultado de ejecutar exec() u obtenidos de una consulta SQL;
Tiempo de acción: cada vez que el script accede a los datos generados en el estado de ejecución.
Por lo tanto, el valor de configuración de magic_quotes_gpc afectará los datos obtenidos a través de Obtener/Publicar/Cookies; el valor de configuración de magic_quotes_runtime afectará los datos leídos del archivo o los datos obtenidos de la consulta de la base de datos.
Ejemplo:
<formulario acción="" método="publicación" >
STR:<tipo de entrada="texto" nombre="cadena">
<tipo de entrada="enviar">
</formulario>
<?php
/* Completamos el formulario: '" Estos símbolos, si magic_quotes_gpc no está activado, no se escaparán mediante barras invertidas*/
echo 'El valor pasado a través de POST ahora es:' ,$_POST['str'], '<br />';
if (get_magic_quotes_gpc()) { // Verifique si magic_quotes_gpc está activado. Si no, use Addslashes para convertir. justo
$cadena = $_POST['cadena'];
} demás {
$cadena = addlashes($_POST['cadena']);
}
echo 'Aquí está la versión escapada:' ,$str, '<hr />';
$sql = "INSERTAR EN apellidos (apellido) VALORES ('$str')"
//============================= = =================================================== = ======
//-----magic_quotes_gpc solo escapará: datos de www.devdao.com obtenidos a través de Get/Post/Cookies
//-----magic_quotes_runtime escapará: datos leídos de un archivo o el resultado de ejecutar exec() u obtenidos de una consulta SQL
//================================================== =======================================
$data = implode(file('try.php')); // Todavía escribimos los caracteres '" para realizar pruebas
echo 'Aquí están los datos de try.php,';
si (get_magic_quotes_runtime()) {
$datos = $datos;
echo 'escapado por el sistema' .$data;
} demás {
echo 'escapado por Addlashes' .$data = Addlashes($data);
}
$sql = "INSERTAR EN apellidos (apellido) VALORES ('$datos')";
echo '<br />La declaración SQL es:<br />' ,$sql;
//---Todo se escapa al ingresar a la base de datos, pero hay barras invertidas adicionales cuando queremos leer los datos originales, usamos stripslashes() para eliminar las barras invertidas.
//---stripslashes() y addlashes() tienen efectos opuestos
?>La diferencia más crítica son los dos puntos mencionados anteriormente: apuntan a diferentes objetos de procesamiento. El valor de configuración de magic_quotes_gpc afectará los datos obtenidos a través de Obtener/Publicar/Cookies. El valor de configuración de magic_quotes_runtime afectará la lectura del archivo. Los datos obtenidos o los obtenidos de la consulta de la base de datos se mencionan aquí por cierto: set_magic_quotes_runtime(): establece el valor de magic_quotes_runtime 0=off 1=on. Puede usar echo phpinfo(); ): Verifique el valor de magic_quotes_gpc 0 = Cerrar 1 = Abrir. get_magic_quotes_runtime (): Verifique el valor de magic_quotes_runtime. 0=apagado. 1=encendido. Tenga en cuenta que no existe la función set_magic_quotes_gpc(), es decir, el valor de magic_quotes_gpc no se puede configurar en el programa.