{"id":3364,"date":"2015-07-15T15:30:12","date_gmt":"2015-07-15T18:30:12","guid":{"rendered":"http:\/\/blog.dialhost.com.br\/?p=3364"},"modified":"2019-05-10T15:25:02","modified_gmt":"2019-05-10T18:25:02","slug":"addslashes-tratamento-de-strings-com-php","status":"publish","type":"post","link":"https:\/\/www.dialhost.com.br\/blog\/addslashes-tratamento-de-strings-com-php\/","title":{"rendered":"Addslashes &#8211; Tratamento de strings com php"},"content":{"rendered":"\n<p>Neste m\u00eas de julho, continuei com os estudos em tratamento de strings para trazer algumas fun\u00e7\u00f5es \u00fateis (ou n\u00e3o) ao desenvolvimento de sistemas. Trago ent\u00e3o, um pouco sobre a fun\u00e7\u00e3o addslashes. A fun\u00e7\u00e3o addslashes foi por algum tempo uma solu\u00e7\u00e3o eficaz para escapar determinados caracteres na inser\u00e7\u00e3o de dados em banco de dados. Com esta fun\u00e7\u00e3o era poss\u00edvel salvar sem problemas strings como Bacon&#8217;s Tower, sem que as aspas simples (&#8216;) removessem a interpreta\u00e7\u00e3o de string. Al\u00e9m disto, o escapamento de caracteres \u00e9 importante para evitar SQL injection e assim deixar seu sistema menos vulner\u00e1vel, al\u00e9m de permitir maior integridade aos dados..<\/p>\n\n\n\n<h2>Ser\u00e1 que o&nbsp;addslashes n\u00e3o possui mais tanta serventia?<\/h2>\n\n\n\n<p>Com a evolu\u00e7\u00e3o do PHP novas fun\u00e7\u00f5es foram desenvolvidas para tratamento de dados e conex\u00e3o com bancos. S\u00e3o exemplos disto a conex\u00e3o via <a title=\"PDO PHP\" rel=\"noopener noreferrer\" href=\"http:\/\/br1.php.net\/manual\/pt_BR\/class.pdo.php\" target=\"_blank\">PDO<\/a>, ou a utiliza\u00e7\u00e3o da classe <a href=\"http:\/\/br1.php.net\/manual\/pt_BR\/class.mysqli.php\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (abre numa nova aba)\">MySQLi<\/a>. Conectar-se ao MySQL com estas duas novas classes se tornou uma pr\u00e1tica mais atual, segura e f\u00e1cil.<\/p>\n\n\n\n<p>Antes, o tratamento de dados para o MySQL podia ser feita desta maneira.<br><\/p>\n\n\n<p>[code]&lt;?php<br \/>\n$sub = addslashes(&#8220;minha&#8217;string&#8221;);<br \/>\nmysql_query(&#8220;SELECT * FROM messages WHERE subject LIKE &#8216;$sub%'&#8221;);<br \/>\n?&gt;[\/code]<\/p>\n\n\n\n<h3>Tratando com MySQLi<\/h3>\n\n\n\n<p>Voltando ao uso do addslashes, com a classe MySQLi foi criada a fun\u00e7\u00e3o&nbsp;mysqli::real_escape_string, que encoda a string e converte para um formato SQL escapado v\u00e1lido.&nbsp;A diferen\u00e7a desta para a primeira \u00e9 que al\u00e9m de escapar os caracteres&nbsp;&#8216;, &#8220;, \\, e&nbsp;NULL o real_escape_string escapa os caracteres&nbsp;\\x00, \\, \\r e \\x1a. Assim, esta fun\u00e7\u00e3o \u00e9 mais eficiente ao manter a integridade de uma informa\u00e7\u00e3o a ser gravada no banco MySQL.<\/p>\n\n\n\n<p>O C\u00f3digo n\u00e3o muda muita coisa:<br><\/p>\n\n\n<p>[code]&lt;?php<br \/>\n$sub = addcslashes(mysql_real_escape_string(&#8220;%something_&#8221;), &#8220;%_&#8221;);<br \/>\nmysql_query(&#8220;SELECT * FROM messages WHERE subject LIKE &#8216;$sub%'&#8221;);<br \/>\n?&gt;[\/code]<\/p>\n\n\n\n<p>Acima utilizei a fun\u00e7\u00e3o addcslashes para remover a possibilidade de injection em consultas com LIKE. A fun\u00e7\u00e3o ajuda o mysql_real_escape_string escapando os caracteres % e _ e garantindo integridade a consulta.<\/p>\n\n\n\n<h3>Tratando com PDO<\/h3>\n\n\n\n<p>Indo ainda mais a fundo nas conex\u00f5es de banco, hoje, a maioria dos frameworks PHP como: Laravel, Simfony, Zend e etc utilizam o PDO para realizar conex\u00f5es de banco. Isto porque utilzando o PDO \u00e9 poss\u00edvel abstrair a conex\u00e3o com bancos diversos e n\u00e3o ficar limitado apenas no MySQL.<\/p>\n\n\n\n<p>Ok, \u00e9 dif\u00edcil falar de addslashes sem falar de conex\u00f5es com banco de dados, j\u00e1 que por muito tempo sua principal fun\u00e7\u00e3o era para tratamento de dados para enviar ao banco de dados. Mas, voltemos ao tratamento da string.<\/p>\n\n\n\n<p>Atrav\u00e9s do PDO, o ato de escapar os caracteres especiais fica abstra\u00eddo&nbsp;no processo de preparo da query, como no exemplo abaixo.<br><\/p>\n\n\n<p>[code]&lt;?php<\/p>\n<p>$sql = &#8216;SELECT name, color,<br \/>\nFROM candy<br \/>\nWHERE name like :name;&#8217;<\/p>\n<p>$sth = $dbh-&gt;prepare($sql, array(PDO::ATTR_CURSOR =&gt; PDO::CURSOR_FWDONLY));<\/p>\n<p>$sth-&gt;execute(array(&#8216;:name&#8217; =&gt; &#8216;cupcake&#8217;));<br \/>\n$red = $sth-&gt;fetchAll();<\/p>\n<p>$sth-&gt;execute(array(&#8216;:name&#8217; =&gt; &#8216;rocambole&#8217;));<br \/>\n$yellow = $sth-&gt;fetchAll();<\/p>\n<p>?&gt;[\/code]<\/p>\n\n\n\n<p>Como podemos ver, neste processo n\u00e3o existe a necessidade de se escapar os dados antes de enviar para a query.&nbsp;Todo o tratamento j\u00e1 \u00e9 feito pela extens\u00e3o do PDO.<\/p>\n\n\n\n<p>Por fim, a principal aplica\u00e7\u00e3o do addslashes perdeu o sentido. Lembro, por\u00e9m,&nbsp;que para outros tipos de tratamento que necessitem de escapar dados a fun\u00e7\u00e3o ainda \u00e9 v\u00e1lida.<\/p>\n\n\n\n<div class=\"publicidade\">\n<div id=\"texto\">Tenha todo o desempenho para o seu site com a Hospedagem Cloud DialHost. Servidores em cloud prontos para receber sites em PHP. <a title=\"Hospedagem Cloud DialHost\" href=\"http:\/\/www.dialhost.com.br\/hospedagem-de-sites\/hospedagem-cloud?utm_source=DialHost&amp;utm_medium=Blog&amp;utm_campaign=Frases_Blog\" target=\"_blank\" rel=\"noopener noreferrer\">Saiba Mais<\/a> ou <a href=\"http:\/\/www.dialhost.com.br\/?utm_source=DialHost&amp;utm_medium=frases_blog&amp;utm_campaign=black-friday\">veja nossos produtos<\/a>.<\/div>\n<\/div>\n\n\n\n<div class=\"clear\">&nbsp;<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\t\t\t\t A fun\u00e7\u00e3o addslashes foi por algum tempo uma solu\u00e7\u00e3o eficaz para escapar determinados caracteres na inser\u00e7\u00e3o de dados em banco de dados. Descubra sua utilidade para o tratamento de strings.\t\t\t\t<\/p>\n","protected":false},"author":1,"featured_media":9023,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[23,24,12],"tags":[76,167,195],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v15.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Addslashes - Tratamento de strings com php - Blog DialHost<\/title>\n<meta name=\"description\" content=\"A fun\u00e7\u00e3o addslashes foi por algum tempo uma solu\u00e7\u00e3o eficaz para escapar determinados caracteres na inser\u00e7\u00e3o de dados em banco de dados.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dialhost.com.br\/blog\/addslashes-tratamento-de-strings-com-php\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Addslashes - Tratamento de strings com php - Blog DialHost\" \/>\n<meta property=\"og:description\" content=\"A fun\u00e7\u00e3o addslashes foi por algum tempo uma solu\u00e7\u00e3o eficaz para escapar determinados caracteres na inser\u00e7\u00e3o de dados em banco de dados.\" \/>\n<meta property=\"og:url\" content=\"\/blog\/addslashes-tratamento-de-strings-com-php\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog DialHost\" \/>\n<meta property=\"article:publisher\" content=\"http:\/\/www.facebook.com\/DialHost\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/DialHost\" \/>\n<meta property=\"article:published_time\" content=\"2015-07-15T18:30:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-05-10T18:25:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dialhost.com.br\/blog\/wp-content\/uploads\/2015\/08\/addslashes.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"700\" \/>\n\t<meta property=\"og:image:height\" content=\"260\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dialhost\" \/>\n<meta name=\"twitter:site\" content=\"@dialhost\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#organization\",\"name\":\"DialHost Internet\",\"url\":\"https:\/\/www.dialhost.com.br\/blog\/\",\"sameAs\":[\"http:\/\/www.facebook.com\/DialHost\",\"https:\/\/www.instagram.com\/dialhost_oficial\/\",\"https:\/\/www.linkedin.com\/company\/dialhost-internet\",\"https:\/\/www.youtube.com\/channel\/UCAiqiX8IiqTSfA8wQhpzgXQ\",\"https:\/\/twitter.com\/dialhost\"],\"logo\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#logo\",\"inLanguage\":\"pt-BR\",\"url\":\"https:\/\/www.dialhost.com.br\/blog\/wp-content\/uploads\/2019\/03\/marca-dialhost.png\",\"width\":81,\"height\":81,\"caption\":\"DialHost Internet\"},\"image\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#logo\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#website\",\"url\":\"https:\/\/www.dialhost.com.br\/blog\/\",\"name\":\"Blog DialHost\",\"description\":\"Os melhores conte\\u00fados sobre Desenvolvimento Web, Marketing e Neg\\u00f3cios\",\"publisher\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/www.dialhost.com.br\/blog\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/addslashes-tratamento-de-strings-com-php\/#primaryimage\",\"inLanguage\":\"pt-BR\",\"url\":\"https:\/\/www.dialhost.com.br\/blog\/wp-content\/uploads\/2015\/08\/addslashes.jpg\",\"width\":700,\"height\":260},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/addslashes-tratamento-de-strings-com-php\/#webpage\",\"url\":\"https:\/\/www.dialhost.com.br\/blog\/addslashes-tratamento-de-strings-com-php\/\",\"name\":\"Addslashes - Tratamento de strings com php - Blog DialHost\",\"isPartOf\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/addslashes-tratamento-de-strings-com-php\/#primaryimage\"},\"datePublished\":\"2015-07-15T18:30:12+00:00\",\"dateModified\":\"2019-05-10T18:25:02+00:00\",\"description\":\"A fun\\u00e7\\u00e3o addslashes foi por algum tempo uma solu\\u00e7\\u00e3o eficaz para escapar determinados caracteres na inser\\u00e7\\u00e3o de dados em banco de dados.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/addslashes-tratamento-de-strings-com-php\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dialhost.com.br\/blog\/addslashes-tratamento-de-strings-com-php\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/addslashes-tratamento-de-strings-com-php\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"\/blog\/\",\"url\":\"\/blog\/\",\"name\":\"In\\u00edcio\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"\/blog\/addslashes-tratamento-de-strings-com-php\/\",\"url\":\"\/blog\/addslashes-tratamento-de-strings-com-php\/\",\"name\":\"Addslashes &#8211; Tratamento de strings com php\"}}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/addslashes-tratamento-de-strings-com-php\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/addslashes-tratamento-de-strings-com-php\/#webpage\"},\"author\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#\/schema\/person\/a0b10cbe35449dea173a06d4664f9fcc\"},\"headline\":\"Addslashes &#8211; Tratamento de strings com php\",\"datePublished\":\"2015-07-15T18:30:12+00:00\",\"dateModified\":\"2019-05-10T18:25:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/addslashes-tratamento-de-strings-com-php\/#webpage\"},\"publisher\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/addslashes-tratamento-de-strings-com-php\/#primaryimage\"},\"keywords\":\"desenvolvimento,php,Strings\",\"articleSection\":\"Laravel,PHP,Tecnologias\",\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#\/schema\/person\/a0b10cbe35449dea173a06d4664f9fcc\",\"name\":\"DialHost Internet\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#personlogo\",\"inLanguage\":\"pt-BR\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/05feec2f99aef1c42b09aeaa637ee66f?s=96&r=g\",\"caption\":\"DialHost Internet\"},\"description\":\"H\\u00e1 mais de 18 anos proporcionando um servi\\u00e7o de hospedagem de sites voltado 100% na Experi\\u00eancia e Sucesso do Cliente, prezando a qualidade, transpar\\u00eancia e seguran\\u00e7a.\",\"sameAs\":[\"https:\/\/www.facebook.com\/DialHost\",\"https:\/\/www.instagram.com\/dialhost_oficial\/\",\"https:\/\/www.linkedin.com\/company\/dialhost-internet\",\"https:\/\/twitter.com\/dialhost\",\"https:\/\/www.youtube.com\/channel\/UCAiqiX8IiqTSfA8wQhpzgXQ\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/posts\/3364"}],"collection":[{"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/comments?post=3364"}],"version-history":[{"count":0,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/posts\/3364\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/media\/9023"}],"wp:attachment":[{"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/media?parent=3364"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/categories?post=3364"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/tags?post=3364"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}