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 being 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(
)
:
<?php $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 ...
Get Programming PHP, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.