Dit is de algemene vuistregel.
U wilt dat uw variabelen schone representaties van de gegevens zijn. Dat wil zeggen, als u probeert de achternaam van iemand met de naam "O'Brien" op te slaan, dan niet wil deze:
O'Brien
O\'Brien
.. want, nou ja, dat is niet zijn naam:er staan geen ampersands of schuine strepen in. Wanneer u die variabele neemt en uitvoert in een bepaalde context (bijvoorbeeld:invoegen in een SQL-query of afdrukken naar een HTML-pagina), dat is wanneer u het aanpast.
$name = "O'Brien";
$sql = "SELECT * FROM people "
. "WHERE lastname = '" . mysql_real_escape_string($name) . "'";
$html = "<div>Last Name: " . htmlentities($name, ENT_QUOTES) . "</div>";
U wilt nooit htmlentities
. hebben -gecodeerde tekenreeksen die zijn opgeslagen in uw database. Wat gebeurt er als u een CSV of PDF wilt genereren, of iets dat niet is? HTML?
Houd de gegevens schoon en ontsnap alleen voor de specifieke context van het moment.