Escape Output
Escaping is a technique that preserves data as it enters another context. PHP is frequently used as a bridge between disparate data sources, and when you send data to a remote source, it’s your responsibility to prepare it properly so that it’s not misinterpreted.
For example, O'Reilly is
represented as O\'Reilly when used in
an SQL query to be sent to a MySQL database. The backslash before the
single quote exists to preserve the single quote in the context of the SQL
query. The single quote is part of the data, not part of the query, and
the escaping guarantees this interpretation.
The two predominant remote sources to which PHP applications
send data are HTTP clients (web browsers) that interpret HTML, JavaScript,
and other client-side technologies, and databases that interpret SQL. For
the former, PHP provides htmlentities():
$html=array();$html['username']=htmlentities($clean['username'],ENT_QUOTES,'UTF-8');echo"<p>Welcome back,{$html['username']}.</p>";
This example demonstrates the use of another naming convention. The
$html array is similar to the $clean array, except that its purpose is to hold
data that is safe to be used in the context of HTML.
URLs are sometimes embedded in HTML as links:
<a href="http://host/script.php?var={$value}">Click Here</a>In this particular example, $value exists within nested contexts. It’s within the query string of a URL that is embedded in HTML as a link. Because it’s alphabetic in this case, it’s safe to be used in both ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access