Mysql
 sql >> Base de données >  >> RDS >> Mysql

Ai-je besoin de htmlentities() ou htmlspecialchars() dans les instructions préparées ?

htmlentities et htmlspecialchars sont utilisés pour générer la sortie HTML qui est envoyé au navigateur.

Les instructions préparées sont utilisées pour générer/envoyer des requêtes au moteur de base de données .

Les deux permettent l'échappement des données ; mais ils ne s'échappent pas pour le même usage.
Donc, non, les instructions préparées (pour les requêtes SQL) ne vous empêche pas d'utiliser correctement htmlspecialchars /htmlentities (pour la génération HTML)

À propos des strip_tags :il supprimera les balises d'une chaîne, où htmlspecialchars les transformera en entités HTML.
Ces deux fonctions ne font pas la même chose ; vous devez choisir lequel utiliser en fonction de vos besoins / de ce que vous souhaitez obtenir.

Par exemple, avec ce bout de code :

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

Vous obtiendrez ce type de sortie :

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

Dans le premier cas, pas de tag; dans le second, ceux correctement échappés.

Et, avec une sortie HTML :

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

Vous obtiendrez :

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

Lequel de ceux-ci voulez-vous? Cela est la question importante ;-)