sql >> Databasteknik >  >> RDS >> Mysql

Behöver jag htmlentities() eller htmlspecialchars() i förberedda uttalanden?

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



  1. Maximera effektiviteten av databasfrågor för MySQL - del två

  2. Hur kan jag starta och kontrollera min MySQL-logg?

  3. Node.js MySQL behöver beständig anslutning

  4. Laravel:PDOUndantag:kunde inte hitta drivrutinen