A função addslashes foi por algum tempo uma solução eficaz para escapar determinados caracteres na inserção de dados em banco de dados. Descubra sua utilidade para o tratamento de strings.

Neste mês de julho, continuei com os estudos em tratamento de strings para trazer algumas funções úteis (ou não) ao desenvolvimento de sistemas. Trago então, um pouco sobre a função addslashes. A função addslashes foi por algum tempo uma solução eficaz para escapar determinados caracteres na inserção de dados em banco de dados. Com esta função era possível salvar sem problemas strings como Bacon’s Tower, sem que as aspas simples (‘) removessem a interpretação de string. Além disto, o escapamento de caracteres é importante para evitar SQL injection e assim deixar seu sistema menos vulnerável, além de permitir maior integridade aos dados..

Será que o addslashes não possui mais tanta serventia?

Com a evolução do PHP novas funções foram desenvolvidas para tratamento de dados e conexão com bancos. São exemplos disto a conexão via PDO, ou a utilização da classe MySQLi. Conectar-se ao MySQL com estas duas novas classes se tornou uma prática mais atual, segura e fácil.

Antes, o tratamento de dados para o MySQL podia ser feita desta maneira.

[code]<?php
$sub = addslashes(“minha’string”);
mysql_query(“SELECT * FROM messages WHERE subject LIKE ‘$sub%'”);
?>[/code]

Tratando com MySQLi

Voltando ao uso do addslashes, com a classe MySQLi foi criada a função mysqli::real_escape_string, que encoda a string e converte para um formato SQL escapado válido. A diferença desta para a primeira é que além de escapar os caracteres ‘, “, \, e NULL o real_escape_string escapa os caracteres \x00, \, \r e \x1a. Assim, esta função é mais eficiente ao manter a integridade de uma informação a ser gravada no banco MySQL.

O Código não muda muita coisa:

[code]<?php
$sub = addcslashes(mysql_real_escape_string(“%something_”), “%_”);
mysql_query(“SELECT * FROM messages WHERE subject LIKE ‘$sub%'”);
?>[/code]

Acima utilizei a função addcslashes para remover a possibilidade de injection em consultas com LIKE. A função ajuda o mysql_real_escape_string escapando os caracteres % e _ e garantindo integridade a consulta.

Tratando com PDO

Indo ainda mais a fundo nas conexões de banco, hoje, a maioria dos frameworks PHP como: Laravel, Simfony, Zend e etc utilizam o PDO para realizar conexões de banco. Isto porque utilzando o PDO é possível abstrair a conexão com bancos diversos e não ficar limitado apenas no MySQL.

Ok, é difícil falar de addslashes sem falar de conexões com banco de dados, já que por muito tempo sua principal função era para tratamento de dados para enviar ao banco de dados. Mas, voltemos ao tratamento da string.

Através do PDO, o ato de escapar os caracteres especiais fica abstraído no processo de preparo da query, como no exemplo abaixo.

[code]<?php

$sql = ‘SELECT name, color,
FROM candy
WHERE name like :name;’

$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));

$sth->execute(array(‘:name’ => ‘cupcake’));
$red = $sth->fetchAll();

$sth->execute(array(‘:name’ => ‘rocambole’));
$yellow = $sth->fetchAll();

?>[/code]

Como podemos ver, neste processo não existe a necessidade de se escapar os dados antes de enviar para a query. Todo o tratamento já é feito pela extensão do PDO.

Por fim, a principal aplicação do addslashes perdeu o sentido. Lembro, porém, que para outros tipos de tratamento que necessitem de escapar dados a função ainda é válida.

Tenha todo o desempenho para o seu site com a Hospedagem Cloud DialHost. Servidores em cloud prontos para receber sites em PHP. Saiba Mais ou veja nossos produtos.
 

Compartilhe:

Sobre o autor:

Sobre o autor:

Posts Relacionados:

Loja Virtual para iniciantes

Encontrar a melhor plataforma para construir sua primeira Loja Virtual é uma tarefa que exige uma pesquisa sobre soluções. Nesse artigo você confere soluções de baixo valor de investimento e facilidade de configuração.

Novidades do Blog

Deixe seu e-mail abaixo para passar a receber promoções e novidades do nosso Blog.