addslashes()和stripslashes()正好是相反的,addslashes()加个\(反斜杠),stripslashes()去个\(反斜杠)。
向mysql写入数据时,如:mysql_query("update tableName set `title`='goaler's blog'");PHP将会报错,因为数据库对单引号过敏。
PHP考虑到其安全性,引入了magic_quotes_gpc = On/Off 这个参数。
当magic_quotes_gpc = On时,系统会自动处理单引号等问题,可以在不做任何处理的情况下就直接将含有单引号的数据插入数据库中,如果使用addslashes()处理数据,数据在数据库中将以\'形式保存,此时直接输出的话,就会发现比自己原先输入的内容多了个\(反斜杠),这时需要用stripslashes()把自动加上去的\(反斜杠)去掉,这跟str_replace("\", "",$str)不同。
当magic_quotes_gpc = Off时,系统不会处理单引号等问题,需要考虑单引号的问题了,不能一味地信任其运行环境,如果使用addslashes()处理数据,数据在数据库中将以'形式保存,不存在上面说的有\(反斜杠)的问题,addslashes()起到插入数据不出错的作用,此时直接输出的话数据正常,不需要再用stripslashes()。
判断magic_quotes_gpc是On还是Off方法:function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc();true是On,false是Off。