aletres 0 Denunciar post Postado Abril 4, 2008 Vou começar por um exemplo: Tenho um campo onde o cliente vai digitar um produto de informática: Monitor LG 17" (aspas duplas) ou Monitor LG 17'' (aspas simples). Quando os valores entram na próxima página (Entrada de $_POST, banco de dados, etc...) dá erro, pois o programa confunde como parte de sua programação, ou seja, se entrar por exemplo uma aspas simples, o programa pensa que finalizou um Var_Char ou um comando. Qual é a melhor maneira de tratar isso? Já quebrei a cabeça e não consigo. Agradeço a ajuda. http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif Alexandre www.linkscreen.com.br Compartilhar este post Link para o post Compartilhar em outros sites
LHAlmeida 0 Denunciar post Postado Abril 4, 2008 Vou começar por um exemplo: Tenho um campo onde o cliente vai digitar um produto de informática: Monitor LG 17" (aspas duplas) ou Monitor LG 17'' (aspas simples). Quando os valores entram na próxima página (Entrada de $_POST, banco de dados, etc...) dá erro, pois o programa confunde como parte de sua programação, ou seja, se entrar por exemplo uma aspas simples, o programa pensa que finalizou um Var_Char ou um comando. Qual é a melhor maneira de tratar isso? Já quebrei a cabeça e não consigo. Agradeço a ajuda. http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif Alexandre www.linkscreen.com.br antes de passar o campo pra sql, chame a funcao addslashes($_POST['nome']); isso faz com que ele escape as aspas que existirem no campo essa funcao retorna qquer tipo de aspas escapadas por uma \ (contra barra) Vi ficar tipo Monitor LG 17\" ou Monitor LG 17\'\' entao o mysql vai conseguir fazer a insert ou update normalmente abraço Compartilhar este post Link para o post Compartilhar em outros sites
aletres 0 Denunciar post Postado Abril 4, 2008 Muito obrigado. Acertou na mosca, ou melhor, no código. rsrsrs... Só há um problema: quando vou editar tal campo, as aspas duplas somem e o usuário não vê. Olha como ficou: <input name="produto_nome" type="text" id="produto_nome" value="Monitor Teste de 15"" size="45" maxlength="50"> Como faço? Tenho que subistituir o caractere ou uso o mesmo comando? Um abraço e obrigado novamente. Alexandre. Compartilhar este post Link para o post Compartilhar em outros sites
LHAlmeida 0 Denunciar post Postado Abril 4, 2008 Muito obrigado. Acertou na mosca, ou melhor, no código. rsrsrs... Só há um problema: quando vou editar tal campo, as aspas duplas somem e o usuário não vê. Olha como ficou: <input name="produto_nome" type="text" id="produto_nome" value="Monitor Teste de 15"" size="45" maxlength="50"> Como faço? Tenho que subistituir o caractere ou uso o mesmo comando? Um abraço e obrigado novamente. Alexandre. sabe que ainda não me deparei com esse problema rs vou fazer um teste aki e te falo... rs abraço Compartilhar este post Link para o post Compartilhar em outros sites
LHAlmeida 0 Denunciar post Postado Abril 4, 2008 Muito obrigado. Acertou na mosca, ou melhor, no código. rsrsrs... Só há um problema: quando vou editar tal campo, as aspas duplas somem e o usuário não vê. Olha como ficou: <input name="produto_nome" type="text" id="produto_nome" value="Monitor Teste de 15"" size="45" maxlength="50"> Como faço? Tenho que subistituir o caractere ou uso o mesmo comando? Um abraço e obrigado novamente. Alexandre. achei a solucao no php.net para mostrar no formulario você vai usar echo htmlspecialchars($variavel) que ele vai trocar os simbolos por caracteres em html só verifique se vai precisar fazer o decode do html antes de dar o addslashes para retirar os simbolos, tenta primeiro sem, se não funfar aih faça o decode, e depois o addslashes $var=htmlspecialchars_decode($var); $var=addslashes($var); me fala se deu certo, pra mostrar eu testei, mas nao tenho nada pra testar no banco agora abraço Compartilhar este post Link para o post Compartilhar em outros sites
aletres 0 Denunciar post Postado Abril 7, 2008 Perfeito! <input name="produto_nome" type="text" id="produto_nome" value="Monitor 15 "" size="45" maxlength="50"> Muitíssimo obrigado, fazia tempo que eu procurava uma resposta correta e objetiva. Valeu! http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Alexandre Compartilhar este post Link para o post Compartilhar em outros sites
aletres 0 Denunciar post Postado Abril 7, 2008 Só mais uma observação complementar para quem precisar também deste tópico. Para $_POST automático, ficou assim: foreach($_POST as $nome_campo => $valor){ $comando = "\$".$nome_campo."=htmlspecialchars(\$_POST[$nome_campo]);<br>"; eval($comando);}code] Um abraço a todos! Alexandre. Compartilhar este post Link para o post Compartilhar em outros sites
aletres 0 Denunciar post Postado Abril 7, 2008 Porém... Agora notei que com aspas simples não funciona, como por exemplo eu digitar no campo: Monitor Seven's Vem o erro: Parse error: syntax error, unexpected '<' in /produto_script.php(14) : eval()'d code on line 1 E agora? Compartilhar este post Link para o post Compartilhar em outros sites
aletres 0 Denunciar post Postado Abril 10, 2008 Alguém tem uma dica? Compartilhar este post Link para o post Compartilhar em outros sites
Detros 0 Denunciar post Postado Abril 11, 2008 o problema nao eh as aspas simples... existe um < que nao deveria existir no arquivo produto_script.php ou no outro q você usar.. verifique os < q você deve achar o erro... Compartilhar este post Link para o post Compartilhar em outros sites
aletres 0 Denunciar post Postado Abril 14, 2008 Isso ocorre quando a aspas simples entra no meio da programação... Não por erro de digitação. Alguém sabe como fazer? Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Paulo André 0 Denunciar post Postado Abril 14, 2008 Você utilizou as duas função? addslashes() e stripslashes()? Compartilhar este post Link para o post Compartilhar em outros sites
aletres 0 Denunciar post Postado Abril 15, 2008 Agora sim, para o código: // Guarda os POSTs foreach($_POST as $nome_campo => $valor){ $comando = "\$".$nome_campo."=addslashes(\$_POST[$nome_campo]);"; eval($comando); } Receber no formulário ou listas: $var_nome = htmlspecialchars($row['var_nome']); Obrigado a todos pela ajuda, aprendi muito com este tópico! http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Compartilhar este post Link para o post Compartilhar em outros sites
ivanferrer 5 Denunciar post Postado Junho 20, 2013 Eu costumo utilizar esta minha função tratando o registro antes de carregar os dados no form: function tratamentoAspasForm($string){ $string = str_replace('"',chr(146).chr(146), $string); $string = str_replace("'",chr(146), $string); return $string; } e depois para dentro do banco eu retorno o estado para o anterior: function tratamentoAspasBanco($string){ $string = str_replace(chr(146).chr(146),'"', $string); $string = str_replace(chr(146),"'",$string); return addslashes($string); } Compartilhar este post Link para o post Compartilhar em outros sites