Deshabilitar las comillas mágicas

Advertencia

Esta característica ha sido declarada OBSOLETA desde PHP 5.3.0. Su uso está totalmente desaconsejado.

La directiva magic_quotes_gpc sólo puede deshabilitarse en el sistema, y no en tiempo de ejecución. En otras palabras, no se puede utilizar ini_set().

Ejemplo #1 Deshabilitar comillas mágicas en el servidor

Ejemplo que establece un Off a estas directivas en php.ini. Para más detalles, lea la sección del manual titulada Cómo cambiar los ajustes de configuración.

; Magic quotes
;

; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off

; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Off

; Use Sybase-style magic quotes (escape ' with '' instead of \').
magic_quotes_sybase = Off

Si no es posible acceder a la configuración del servidor, también puede usar .htaccess. Por ejemplo:

php_flag magic_quotes_gpc Off

Si tuviera interés en implementar código portable (aquél que funciona en cualquier entorno), y no pudiera modificar la configuración en el servidor, aquí hay un ejemplo de cómo deshabilitar magic_quotes_gpc en tiempo de ejecución. Este método es ineficiente por lo que se recomienda establecer los valores apropiados para las directivas en otro lugar.

Ejemplo #2 Deshabilitar las comillas mágicas en tiempo de ejecución

<?php
if (get_magic_quotes_gpc()) {
    
$process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
    while (list(
$key$val) = each($process)) {
        foreach (
$val as $k => $v) {
            unset(
$process[$key][$k]);
            if (
is_array($v)) {
                
$process[$key][stripslashes($k)] = $v;
                
$process[] = &$process[$key][stripslashes($k)];
            } else {
                
$process[$key][stripslashes($k)] = stripslashes($v);
            }
        }
    }
    unset(
$process);
}
?>