htmlentities
e htmlspecialchars
vengono utilizzati per generare l'output HTML che viene inviato al browser.
Le istruzioni preparate vengono utilizzate per generare/inviare query al Motore di database .
Entrambi consentono l'escape dei dati; ma non scappano per lo stesso utilizzo.
Quindi no, istruzioni preparate (per query SQL) non impedirti di usare correttamente htmlspecialchars
/htmlentities
(per la generazione HTML)
Informazioni su strip_tags
:rimuoverà i tag da una stringa, dove htmlspecialchars
le trasformerà in entità HTML.
Queste due funzioni non fanno la stessa cosa; dovresti scegliere quale usare in base alle tue esigenze / cosa vuoi ottenere.
Ad esempio, con questo pezzo di codice:
$str = 'this is a <strong>test</strong>';
var_dump(strip_tags($str));
var_dump(htmlspecialchars($str));
Otterrai questo tipo di output:
string 'this is a test' (length=14)
string 'this is a <strong>test</strong>' (length=43)
Nel primo caso nessun tag; nel secondo, opportunamente sfuggiti.
E, con un output HTML:
$str = 'this is a <strong>test</strong>';
echo strip_tags($str);
echo '<br />';
echo htmlspecialchars($str);
Otterrai:
this is a test
this is a <strong>test</strong>
Quale di quelli vuoi? Quello è la domanda importante ;-)