1. 什么是PHP的addslashes()函数
在PHP中,addslashes()函数可以将单引号(')、双引号(")、反斜杠(\)和NUL(ASCII值为 0)添加反斜杠转义,从而防止在数据库中插入错误的数据。它常用于预备从 Web 表单中插入到数据库的字符串。
2. 参数与返回值
2.1 参数
addslashes()函数只有一个参数,即需要转义的字符串。
2.2 返回值
返回已添加反斜杠的字符串。
3. 使用方法
使用addslashes()函数非常简单,只需要传入需要转义的字符串即可,如下:
$str = "What's your name?";
echo addslashes($str);
运行上述代码,将会输出以下内容:
What\'s your name?
可以看到,单引号被添加了反斜杠转义。
4. 注意事项
虽然addslashes()函数可以提高Web应用程序的安全性,但是需要注意以下4点:
4.1 不要滥用
JavaScript、Flash 和其他客户端技术提供了大量非常好的方法来捕获用户输入。应该在所有情况下都使用合适的过滤技术,而不是依赖 addslashes()。
4.2 设定字符集类型
在使用addslashes()函数的时候,一定要注意你的字符集类型,否则会误转义。
header("Content-type:text/html;charset=utf-8");
$str = "凉凉";
echo addslashes($str);
这时输出的结果是:
涼涼
可以看到,由于使用了错误的字符集类型,addslashes()函数错误地将 utf-8 编码的汉字凉(liáng)误转义了。
4.3 转义前如果进行了字符集处理,则转义后不要再执行字符集处理
如果您的字符串数据本身是经过某种字符集处理的(例如转化成GBK、GB2312等),那么执行addslashes()函数之前,一定要先进行恢复操作,否则会出现不可预料的错误。
4.4 建议使用其他过滤方法
虽然addslashes()函数可以防止SQL注入,但是不是最佳选择。更好的选择是使用PDO,使用它可以保证参数有效,并确保不管填充的值是什么类型,始终会将它们作为字符串处理。