sql >> Database >  >> RDS >> Mysql

PHP &mySQL:wanneer precies htmlentities gebruiken?

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.



  1. mysql aangepaste sortering

  2. Databases migreren naar Azure SQL Database

  3. sql groeperen op versus onderscheiden

  4. Geen SQL-impasse door ontwerp - enige coderingspatronen?