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 <strong>test</strong>' (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 ;-)