Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

aletres

[Resolvido] Tratar aspas duplas e simples

Recommended Posts

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

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

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

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

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.