Mysql
 sql >> Database >  >> RDS >> Mysql

Ho bisogno di htmlentities() o htmlspecialchars() nelle istruzioni preparate?

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