(PHP 4, PHP 5)
addslashes — Escapa un string con barras invertidas
$str
)
Devuelve un string con barras invertidas delante de los carácteres que necesitan
ser escapados. Estos carácteres son la comilla simple ('),
comilla doble "), barra invertida
(\) y NUL (el byte NULL
).
Un ejemplo del uso de addslashes() es cuando se introducen datos en un string que es evaluado por PHP. Por ejemplo, si O'reilly se almacena en $str, es necesario escapar $str. (p.ej. eval("echo '".addslashes($str)."';"); )
Para escapar parámetros de bases de datos, deberían usarse funciones de escape específicas de cada SGBD por razones de seguridad (p.ej. mysqli_real_escape_string() para MySQL o pg_escape_literal(), pg_escape_string() para PostgreSQL). Los SGBD poseen una especificación de escape diferente para identificadores (p.ej. Nombre de tabla, nombre de campo) que para parámetros. Algunos SGBD como PostgreSQL proporcionan una función es escape de identificadores, pg_escape_indentifier(), pero no todos los SGBD proporcionan una API de escape de identificadores. Si este es el caso, consulte el manual del sistema de base de datos para el método apropiado de escape.
Si un SGBD no posee una función de escape y dicho SGBD usa \ para escapar caracteres especias, podría ser posible usar esta función únicamente cuando este método de escape es adecuado para la base de datos. Por favor, observe que el uso de addslashes() para el escape de parámetros de bases de datos puede ser la causa de problemas de seguridad en la mayoría de las bases de datos.
La directiva de PHP magic_quotes_gpc estaba activada (on) por defecto antes de PHP 5.4, y básicamente ejecutaba la función addslashes() en todos los datos GET, POST y COOKIE. No utilizar addslashes() en las cadenas que ya se han escapado con magic_quotes_gpc ya que se hará un doble escape. La función get_magic_quotes_gpc() podría ser útil para comprobar esto.
str
La cadena a escapar.
Devuelve una cadena con escapes.
Ejemplo #1 Un ejemplo de addslashes()
<?php
$str = "Is your name O'reilly?";
// Outputs: Is your name O\'reilly?
echo addslashes($str);
?>