Imshy 0 Denunciar post Postado Fevereiro 27, 2008 Opa, tranquilo? Pessoal, to com um problema quando vou salvar dados em uma tabela no banco... Quando eu voto algum desses caracteres: "(aspas dupla), '(aspas simples), \(barra), ele tah botando uma outra barra antes... Como se fosse uma proteção.. Eu to usando o Zend Framework, Jquery. Tipo, botei pra dah um alert na aplicação quando ainda estava no js, e ele deu normal, mas quando chega no php, ele coloca a barra... Por padrão, o php bota essa barra invertida, mas por padrão ele também tira... E não está acontecendo Oo Queria saber se alguém já teve problema parecido.. Obs: Acho que não é o caso de usar o sripslashes. Compartilhar este post Link para o post Compartilhar em outros sites
narizgudo 0 Denunciar post Postado Fevereiro 27, 2008 A barra invertida é um caractere de escape. Em outras palavras, se você tem uma barra invertida seguida de um caractere, isso pode ser, algumas vezes, traduzido em um novo caractere. As únicas coisas que uma barra invertida escapa, porém, são o apóstrofo e a própria barra invertida (Se você pensar a respeito, caracteres de escape devem sempre escapar a si mesmos).) Acho que uns exemplos são bons agora: puts 'Isso é um apóstrofo: \'' puts 'uma barra invertida no fim da string: \\' puts 'acima\\embaixo' puts 'acima\embaixo' Isso é um apóstrofo: ' uma barra invertida no fim da string: \ acima\embaixo acima\embaixo Fonte: http://aprendaaprogramar.rubyonrails.pro.br/capitulo02 Compartilhar este post Link para o post Compartilhar em outros sites
Imshy 0 Denunciar post Postado Fevereiro 27, 2008 Agradeço a ajuda, mas acho que não expliquei o problema direito =] Testei normalmente, usando action, sem ajuda de nenhum javascript. Testei usando Jquery ( jQuery.ajax ); Testei usando Prototype( Ajax.Request ); Todos, ainda no javascript estavam certo, mas quando o php recebe, ele vem com uma maldita barra invertida... Tem algum modo de eu fazer isso sem stripslashes, ou não existe? Compartilhar este post Link para o post Compartilhar em outros sites
Skyo 1 Denunciar post Postado Fevereiro 27, 2008 Teria como postar trechos do script? Como você disse, parece proteção, você não está aplicando uma? ;) Compartilhar este post Link para o post Compartilhar em outros sites
Prog 183 Denunciar post Postado Fevereiro 27, 2008 Simplesmente pq se não tiver a barra o PHP ou o MySQL podem não conseguir interpretar corretamente o caractere e gravar a informação incorreta. http://br2.php.net/manual/pt_BR/language.types.string.php Compartilhar este post Link para o post Compartilhar em outros sites
Imshy 0 Denunciar post Postado Fevereiro 28, 2008 Teria como postar trechos do script? Como você disse, parece proteção, você não está aplicando uma? ;) Tem sim, é um código simples que demonstra exatamente o meu problema, você pode testar aí mesmo: <form action="recebeDados.php" method="post"> Teste:<br /> <textarea name="teste" id="teste" rows="10" cols="30">D'agua</textarea> <input type="submit" /> </form> e no arquivo recebeDados.php só faça isso: echo '<pre>'; print_r( $_POST ); echo '</pre>'; Você vai ver que ele vai receber o D'agua dessa forma: "D\'agua". O que eu quero fazer é simplesmente que ele tire isso... Só que no meu caso, é num sistema grande, em TODO ele.. então preciso de algo genérico.. Andei lendo sobre isso e muitos falaram sobre array_walk_recursive.. O que acham? Edit: Depois de pesquisar um poquim, achei uma solução amigável =] Na hora de você salvar, dê um array_walk_recursive( $_POST, 'tiraBarraInvertida' ), os parâmetros são ( seuarray, nomedafuncao ) e na funcao voce bota function tiraBarraInvertida( &$array ){ //o "&" é pra modificar diretamente no POST stripslashes( $array ); } Pronto, o seu post tah direitinho agora =DD Agradeço a ajuda de todos, e espero que sirva de referência para outros ^^ Compartilhar este post Link para o post Compartilhar em outros sites