sql >> Base de Datos >  >> RDS >> Mysql

¿Necesito htmlentities() o htmlspecialchars() en declaraciones preparadas?

htmlentities y htmlspecialchars se utilizan para generar la salida HTML que se envía al navegador.

Las declaraciones preparadas se utilizan para generar/enviar consultas al motor de base de datos .

Ambos permiten el escape de datos; pero no escapan para el mismo uso.
Entonces, no, declaraciones preparadas (para consultas SQL) no le impide usar correctamente htmlspecialchars /htmlentities (para generación de HTML)

Acerca de strip_tags :eliminará las etiquetas de una cadena, donde htmlspecialchars las transformará en entidades HTML.
Esas dos funciones no hacen lo mismo; debe elegir cuál usar según sus necesidades / lo que desea obtener.

Por ejemplo, con este fragmento de código:

$str = 'this is a <strong>test</strong>';
var_dump(strip_tags($str));
var_dump(htmlspecialchars($str));

Obtendrá este tipo de resultado:

string 'this is a test' (length=14)
string 'this is a &lt;strong&gt;test&lt;/strong&gt;' (length=43)

En el primer caso, sin etiqueta; en el segundo, correctamente escapadas.

Y, con una salida HTML:

$str = 'this is a <strong>test</strong>';
echo strip_tags($str);
echo '<br />';
echo htmlspecialchars($str);

Obtendrás:

this is a test
this is a <strong>test</strong>

¿Cuál de esos quieres? Eso es la pregunta importante ;-)