La siguiente porción de código es una práctica muy extendida en WordPress, sirve para que las funciones puedan tener un buen número de parámetros opcionales sin que el código sea visualmente feo:
/* Funciones de WordPress */
function stripslashes_deep($value) {
$value = is_array($value) ?
array_map('stripslashes_deep', $value) :
stripslashes($value);
return $value;
}
function wp_parse_str( $string, &$array ) {
parse_str( $string, $array );
if ( get_magic_quotes_gpc() )
$array = stripslashes_deep( $array );
return $array;
}
/* Fin */
function get_posts( $args = '' ) {
$defaults = array(
'limit' => 5,
'post_type' => ''
);
$args = wp_parse_str($args, $defaults);
extract($args, EXTR_SKIP);
$where = '';
if ( !empty($post_type) )
$sql = "SELECT * FROM posts $where LIMIT $limit";
// ejecutar la consulta en una base de datos MySQL
echo htmlspecialchars($sql);
}
$limit = empty($_GET['limit']) ? 5 : (int) $_GET['limit'];
if (get_magic_quotes_gpc())
$_GET['type'] = stripslashes($_GET['type']);
// Se usa addslashes sólo para el ejemplo.
// $type = mysql_real_escape_string($_GET['type']);
$type = addslashes($_GET['type']);
get_posts("limit=$limit&post_type=$type");
?>
Sobre el ejemplo mostrado:
- ¿Tiene algún problema de seguridad?
- ¿Qué pasa si cambiamos la línea resaltada por esta otra, tiene algún problema de seguridad?
php:
Para los interesados en este pequeño quiz, subí una página en la que pueden realizar sus pruebas.