对于一些常见的输出目标(包括客户端、数据库教程和URL)的转义,PHP 中有内置函数可用。
如果你要写一个自己算法,做到万无一失很重要。需要找到在外系统中特殊字符的可靠和完整的列表,以及它们的表示方式,这样数据是被保留下来而不是转译了。
最常见的输出目标是客户机,使用htmlentities( )在数据发出前进行转义是最好的方法。与其它字符串函数一样,它输入是一个字符串,对其进行加工后进行输出。但是使用htmlentities( )函数的最佳方式是指定它的两个可选参数:引号的转义方式(第二参数)及字符集(第三参数)。引号的转义方式应该指定为ENT_QUOTES,它的目的是同时转义单引号和双引号,这样做是最彻底的,字符集参数必须与该页面所使用的字符集相必配。
为了区分数据是否已转义,我还是建议定义一个命名机制。对于输出到客户机的转义数据,我使用$html 数组进行存储,该数据首先初始化成一个空数组,对所有已过滤和已转义数据进行保存。
$html = array( );
$html['username'] = htmlentities($clean['username'], ENT_QUOTES, 'UTF-8');
echo "Welcome back, {$html['username']}.
";
?>
小提示
htmlspecialchars( )函数与htmlentities( )函数基本相同,它们的参数定义完全相同,只不过是htmlentities( )的转义更为彻底。通过$html['username']把username 输出到客户端,你就可以确保其中的特殊字符不会被浏览
器所错误解释。如果username 只包含字母和数字的话,实际上转义是没有必要的,但是这体现了深度防范的原则。转义任何的输出是一个非常好的习惯,它可以戏剧性地提高你的软件的安全性。
另外一个常见的输出目标是数据库。如果可能的话,你需要对SQL 语句中的数据使用PHP内建函数进行转义。对于MySQL 用户,最好的转义函数是mysql教程_real_escape_string( )。如果你使用的数据库没有PHP 内建转义函数可用的话,addslashes( )是最后的选择。
下面的例子说明了对于MySQL 数据库的正确的转义技巧:
$mysql = array( );
$mysql['username'] = mysql_real_escape_string($clean['username']);
$sql = "SELECT *
FROM profile
WHERE username = '{$mysql['username']}'";
$result = mysql_query($sql);
?>

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

WebStorm Mac版
好用的JavaScript開發工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。