stripslashes和addslashes的区别

咱们在向mysql写入数据时,好比:
mysql_query(”update table set `title`=’kuhanzhu’s blog’”);

那就会出错。同asp时同样,数据库都会对单引号过敏。而addslashes在这个时候就最长面子了,跟asp的replace(”‘”,”””,”kuhanzhu’s blog”)功能同样。

PHP为了安全性,因此引入了个magic_quotes_gpc = On的功能,能够不须要作任何处理就能直接把单引号插入数据库中,那么对于Off时,则须要考虑单引号的问题了,而不是一味地信任运行环境。mysql

 

magic_quotes_gpc = On时,使用了addslashes()处理后的数据在数据库中将以\’形式保存,若是此时直接输出的话,就会发现比本身期待的内容多了个\,所以stripslashes()出场了,它能把\去掉(区别于str_replace(”\”, “”,$Str))。sql

 

magic_quotes_gpc = Off时,使用了addslashes()处理后的数据在数据库中将以’形式保存,没有上面说的有\的问题,addslashes()起到插入数据不出错的做用,若是此时直接输出的话,数据正常。不须要再用stripslashes()。数据库

 

addslashes()和stripslashes()正好是相反的,直接记忆:addslashes()加个\,stripslashes()去个\安全

 

那么何时用呢? 简单说:spa

 

当magic_quotes_gpc = On时,系统会自动处理单引号等问题,用不用addslashes()和stripslashes()都不要紧,可是若是添加数据时用了addslashes(),那么显示数据时必需要stripslashes()code

 

当magic_quotes_gpc = Off时,系统不会处理单引号等问题,因此插入数据时必需要使用addslashes(),显示数据时则不须要使用stripslashes()。blog

 

既然有了分析,作程序时要怎么办呢?根据以上两种状况,可得:ip

 

无论magic_quotes_gpc是On仍是Off,咱添加数据时都用addslashes(),当On时,必须使用stripslashes(),Off时则不能用stripslashes()。get

 

如何判断On仍是Off呢?用get_magic_quotes_gpc()。it

 1 代码 
 2 
 3 //提交数据,或者变量准备:
 4 
 5 $Content=addslashes(”这里面是数据,无论有没单引号或者仍是变量”);
 6 
 7 //插入数据到数据库,代码省略
 8 
 9 //开始显示数据
10 
11 $Content=”从数据库读取的数据”;
12 
13 if(get_magic_quotes_gpc()){
14   $Content=stripslashes($Content); 
15 }
16 
17 echo $Content;
相关文章
相关标签/搜索