¿El uso de magic_quotes () afectan el uso de mysql_real_escape_string ()
-
30-09-2019 - |
Pregunta
Si he magic_quotes
conectar y usar mysql_real_escape_string
, se escapó el doble de la cuerda? Va a causar problemas?
Asumo por lo basa en la función get_magic_quotes()
pero sólo en busca de confirmación.
(. P.S Es más fácil hacer esta pregunta de prueba en mi oficina con toda la seguridad que tenemos en su lugar - Me 10-15 se necesita para configurar todo para conseguir un entorno usable)
Solución
Si escapar un valor obtenido de entrada GET / POST / Cookie, ya habrá addslashes()
aplicado a que, por lo pasándolo a través de mysql_real_escape_string()
, de hecho, comillas dobles.
Para despojar em:
if (get_magic_quotes_gpc())
{
$_GET = json_decode(stripslashes(json_encode($_GET, JSON_HEX_APOS)), true);
$_POST = json_decode(stripslashes(json_encode($_POST, JSON_HEX_APOS)), true);
$_COOKIE = json_decode(stripslashes(json_encode($_COOKIE, JSON_HEX_APOS)), true);
$_REQUEST = json_decode(stripslashes(json_encode($_REQUEST, JSON_HEX_APOS)), true);
ini_set('magic_quotes_gpc', 0);
}
Esta pregunta tiene algunas otras opciones para despojar cotizaciones / hacer frente a la terrible magic_quotes_gpc
PHP ' característica'.
Otros consejos
documentación de mysql_real_escape_string
(I espero que esto no es difícil también):
Nota: Si
magic_quotes_gpc
está activado, se aplica primerostripslashes()
a los datos. El uso de esta función en los datos que ya se ha escapado escapará a los datos dos veces.
Por supuesto, la forma más fácil es convertir magic_quotes fuera.
Wuth PHP habitual / config de Apache, esta línea
php_flag magic_quotes_gpc 0
en el archivo .htaccess
va a hacer la cosa.
pero para el propósito de la compatibilidad, una función puede ser utilizada en algún archivo de configuración también.
if ( get_magic_quotes_gpc( ) ) {
$_GET = array_map_recursive('stripslashes', $_GET) ;
$_POST = array_map_recursive('stripslashes', $_POST) ;
$_COOKIE = array_map_recursive('stripslashes', $_COOKIE) ;
$_REQUEST = array_map_recursive('stripslashes', $_REQUEST) ;
if (isset($_SERVER['PHP_AUTH_USER'])) stripslashes($_SERVER['PHP_AUTH_USER']);
if (isset($_SERVER['PHP_AUTH_PW'])) stripslashes($_SERVER['PHP_AUTH_PW']);
}
uno de los más fáciles
Si tengo magic_quotes encendido y Yo uso mysql_real_escape_string, la voluntad el Tring se escaparon doble?
Sí, será, pero se podía hacer algo como esto, sin embargo:
if (get_magic_quotes_gpc())
{
$escaped = stripslashes($your_vars);
}
Nota: Puede desactivar las comillas mágicas de PHP.ini o utilizar el siguiente función para anularla:
// no more magic quotes
function get_magic_quotes_gpc()
{
return false;
}