htmlentities
och htmlspecialchars
används för att generera HTML-utdata som skickas till webbläsaren.
Förberedda uttalanden används för att generera/skicka frågor till databasmotorn .
Båda tillåter flykt av data; men de rymmer inte för samma användning.
Så nej, förberedda satser (för SQL-frågor) hindra dig inte från att korrekt använda htmlspecialchars
/htmlentities
(för HTML-generering)
Om strip_tags
:det tar bort taggar från en sträng, där htmlspecialchars
kommer att omvandla dem till HTML-enheter.
De här två funktionerna gör inte samma sak; du bör välja vilken du vill använda beroende på dina behov / vad du vill få.
Till exempel med denna kodbit:
$str = 'this is a <strong>test</strong>';
var_dump(strip_tags($str));
var_dump(htmlspecialchars($str));
Du får den här typen av utdata:
string 'this is a test' (length=14)
string 'this is a <strong>test</strong>' (length=43)
I det första fallet, ingen tagg; i den andra, korrekt undkomna.
Och, med en HTML-utgång:
$str = 'this is a <strong>test</strong>';
echo strip_tags($str);
echo '<br />';
echo htmlspecialchars($str);
Du får:
this is a test
this is a <strong>test</strong>
Vilken av dem vill du ha? Det är den viktiga frågan ;-)