stripslashesとaddslashesの違い

3204 ワード

    mysql     ,  :
mysql_query(”update table set `title`=’kuhanzhu’s blog’”);

。 asp , 。 addslashes , asp replace(”‘”,”””,”kuhanzhu’s blog”) 。

PHPはセキュリティのためにmagic_を導入しましたquotes_gpc=Onの機能で、何の処理もせずに直接データベースに一重引用符を挿入できるので、Offの場合は、実行環境を信頼するのではなく、一重引用符の問題を考慮する必要があります.
 
  

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

 
  

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

 
  

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

 
  

那么什么时候用呢? 简单说:

 
  

当magic_quotes_gpc = On时,系统会自动处理单引号等问题,用不用addslashes()和stripslashes()都没关系,但是如果添加数据时用了addslashes(),那么显示数据时必须要stripslashes()

 
  

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

 
  

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

 
  

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

 
  

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

 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;