Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Benötige ich htmlentities() oder htmlspecialchars() in vorbereiteten Anweisungen?

htmlentities und htmlspecialchars werden verwendet, um die HTML-Ausgabe zu generieren die an den Browser gesendet wird.

Vorbereitete Anweisungen werden zum Generieren/Senden von Abfragen an die Datenbank-Engine verwendet .

Beide erlauben das Entweichen von Daten; aber sie werden nicht für dieselbe Verwendung maskiert.
Also, nein, vorbereitete Anweisungen (für SQL-Abfragen) hindern Sie nicht daran, htmlspecialchars richtig zu verwenden /htmlentities (für die HTML-Generierung)

Über strip_tags :Es entfernt Tags aus einer Zeichenfolge, wobei htmlspecialchars wandelt sie in HTML-Einheiten um.
Diese beiden Funktionen machen nicht dasselbe; Sie sollten je nach Ihren Bedürfnissen / dem, was Sie erhalten möchten, auswählen, welches Sie verwenden möchten.

Zum Beispiel mit diesem Stück Code:

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

Sie erhalten diese Art von Ausgabe:

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

Im ersten Fall kein Tag; in der zweiten, richtig entkommene.

Und mit einer HTML-Ausgabe:

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

Sie erhalten:

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

Welches davon willst du? Das ist die wichtige Frage ;-)