Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Preciso de htmlentities() ou htmlspecialchars() em instruções preparadas?


htmlentities e htmlspecialchars são usados ​​para gerar a saída HTML que é enviado para o navegador.

As instruções preparadas são usadas para gerar/enviar consultas ao mecanismo de banco de dados .

Ambos permitem o escape de dados; mas eles não escapam para o mesmo uso.
Então, não, instruções preparadas (para consultas SQL) não o impeça de usar corretamente htmlspecialchars /htmlentities (para geração de HTML)

Sobre strip_tags :ele removerá as tags de uma string, onde htmlspecialchars irá transformá-los em entidades HTML.
Essas duas funções não fazem a mesma coisa; você deve escolher qual usar dependendo de suas necessidades / do que deseja obter.

Por exemplo, com este pedaço de código:
$str = 'this is a <strong>test</strong>';
var_dump(strip_tags($str));
var_dump(htmlspecialchars($str));

Você obterá este tipo de saída:
string 'this is a test' (length=14)
string 'this is a &lt;strong&gt;test&lt;/strong&gt;' (length=43)

No primeiro caso, sem tag; no segundo, devidamente escapados.

E, com uma saída HTML:
$str = 'this is a <strong>test</strong>';
echo strip_tags($str);
echo '<br />';
echo htmlspecialchars($str);

Você terá:
this is a test
this is a <strong>test</strong>

Qual desses você quer? Isso é a pergunta importante ;-)