PHP addslashes()函数讲解

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,使用它可以保证参数有效,并确保不管填充的值是什么类型,始终会将它们作为字符串处理。

后端开发标签