Ir para conteúdo

POWERED BY:

Arquivado

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

aletres

[Resolvido] Banco de dados e PHP: Usar caracter especial ou HTML?

Recommended Posts

Qual a melhor maneira para guardar strings no banco de dados?

 

Exemplo de caracteres especiais ou códigos HTML:

 

à = à

è = è

 

O que é melhor?

 

Alexandre.

Compartilhar este post


Link para o post
Compartilhar em outros sites

no formato original

ao converter para HTMLEntities terá problemas quando fizer comparações em filtros por ordem alfabética por exemplo

 

como exemplo, a palavra "Água"

 

Original:

Água

 

HTML Entities:

&Aacutegua

 

 

supondo-se que esteja cadastrando diversas palavras

 

Abacaxi

Açaí

Açúcar

Azeite

 

 

como ficaria a ordem alfabética numa instrução SQL ?

ORDER BY nome ASC

se guardar os nomes em HTML Entities, será retornado a seguinte ordem:

 

Água

Açaí

Açúcar

Abacaxi

Azeite

Isso acontece porque o banco de dados não distingue se a palavra está usando HTML Entities ou não

 

Nesse caso, Água retornará em primeiro porque inicia-se com um caracter especial "e comercial" (&)

Água

 

portanto, salve sem corromper os dados originais

Compartilhar este post


Link para o post
Compartilhar em outros sites

Era mesmo o que eu pensava...

 

Fico preocupado com a segurança do site... acho que vou bloquear somente as TAGS <> e ASPAS "''".

 

Obrigado.

 

Alexandre.

Compartilhar este post


Link para o post
Compartilhar em outros sites

porque irá bloquear?

 

apenas evite as injections nao precisa bloquear caracters

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já uso um anti sql_injection:

 

if(eregi("http|www|ftp|.dat|.txt|.gif|wget", $acao) OR eregi("http|www|ftp|.dat|.txt|.gif|wget", $codigo)) {
	echo "<b>Problemas na página! Fale com o administrador do site.</b>";
	exit;
}

Pra inibir códigos maliciosos elaborei este:

 

foreach($_POST as $nome_campo => $valor){ 
	$comando = "\$".$nome_campo."=trim(addslashes(htmlspecialchars(\$_POST[\$nome_campo], ENT_QUOTES)));";
	eval($comando);
}

Obrigado a todos que me responderam!!!

 

Alexandre.

Compartilhar este post


Link para o post
Compartilhar em outros sites

1. o primeiro codigo serve para filtrar o quê ?

 

 

2. no segundo código tem um erro gravíssimo..

uma injecção sql pode não passar mas uma injeção php passa aí facil, fácil..

Compartilhar este post


Link para o post
Compartilhar em outros sites

O primerio código evita que passa alguma URL pelo GET.

 

Qual é o erro no segundo código? Pode dar um exemplo? Ou solução?

 

Valeu.

 

Alexandre.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aff... deixa prá lá, você tá está dando voltas na conversa sem qualquer nexo... valeu pelo primeiro post.

 

[resolvido]

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.