Porqué No Usar Comillas Mágicas
* Portabilidad Asumir que estén habilitadas, o deshabilitadas, afecta la portabilidad. Use get_magic_quotes_gpc() para verificar su valor, y escriba su código de forma acorde.
* Rendimiento Ya que no todo fragmento de datos escapados es insertado en una base de datos, existe una pérdida en rendimiento al escapar todos esos datos. Simplemente llamar las funciones de escape (como addslashes()) en tiempo de ejecución es más eficiente. Aunque php.ini-dist habilita estas directivas por defecto, php.ini-recommended las deshabilita. Esta recomendación se hace principalmente por razones de rendimiento.
* Inconveniencia Ya que no todos los datos necesitan ser escapados, con frecuencia resulta molesto ver datos escapados cuando no debieran estarlo. Por ejemplo, enviar un correo electrónico desde un formulario y ver un montón de \' en el mensaje. Arreglar esto puedo requerir un uso exagerado de stripslashes().
Desactivación de Comillas Mágicas> <Porqué Usar Comillas Mágicas Last updated: Fri, 22 Aug 2008
add a note add a note User Contributed Notes
Porqué No Usar Comillas Mágicas
estoesunapija at hotmail dot com
15-Sep-2008 10:26
<?php
//One could use array_walk, altough i think it was fun
//and simple doing it this way.
class oop {
//toObject : Transforms an array into an object filtering it
//$source : Array to transform
//$currentLevel : See $maxLevels
//$maxLevels : Protect the system in case of lots of recursion
// i.e. <input type="text" name="test[][]....[N]"
public static function toObject($source=array(),$array=array(),$maxLevels=3,$currentLevel=0) {
if ( !sizeof($source) || ($currentLevel > $maxLevels) ) return FALSE;
$array = (sizeof($array)) ? $array : $source;
$obj = new stdClass();
foreach ($array as $k => $v){
if (is_array($v)) {
$obj->$k = self::toObject($source,$v,$maxLevels,++$currentLevel);
continue;
}
//Assign to the object $obj, the key and the value of the actual value of $source
$obj->$k=$v;
}
return $obj;
}
}
/* Eexamples
$post = oop::toObject($_POST) ;
$get = oop::toObject($_GET) ;
$session = oop::toObject($_SESSION);
var_dump ($post) ;
var_dump ($get) ;
var_dump ($session);
*/
?>
sir dot steve dot h+php at gmail dot com
06-Dec-2007 08:45
I find it useful to define a simple utility function for magic quotes so the application functions as expected regardless of whether magic_quotes_gpc is on:
function strip_magic_slashes($str)
{
return get_magic_quotes_gpc() ? stripslashes($str) : $str;
}
Which can be annoying to add the first time you reference every $_GET /$_POST/$_COOKIE variable, but it prevents you from demanding your users to change their configurations.
rjh at netcraft dot com
13-Jun-2007 02:50
Additionally, addslashes() is not a cure-all against SQL injection attacks. You should use your database's dedicated escape function (such as mysql_escape_string) or better yet, use parameterised queries through mysqli->prepare().
gerard at modusoperandi dot com dot au
13-May-2007 09:53
Apparently it will be removed in PHP 6:
http://www.php.net/~derick/meeting-notes.html#magic-quotes11-Feb-2006 01:47
It is also important to disable Magic Quotes while in development enivronment. For the reasons mentioned above, not everybody is using Magic Quotes.
An application that works fine with Magic Quotes enabled may have security problems (ie can be subject to SQL attacks) when distributed.
add a note add a note
Desactivación de Comillas Mágicas> <Porqué Usar Comillas Mágicas