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)

¿Fue útil?

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 primero stripslashes() 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;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top