• 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时,则需要考虑单引号的问题了,而不是一味地信任运行环境。

    
    

    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;
    
    
  • 相关阅读:
    HDU 5642 King's Order 动态规划
    HDU 5640 King's Cake GCD
    HDU 5641 King's Phone 模拟
    HDU 5299 Circles Game 博弈论 暴力
    HDU 5294 Tricks Device 网络流 最短路
    HDU 5289 Assignment rmq
    HDU 5288 OO’s Sequence 水题
    星际争霸 虚空之遗 人族5BB 操作流程
    Codeforces Beta Round #3 D. Least Cost Bracket Sequence 优先队列
    Codeforces Beta Round #3 C. Tic-tac-toe 模拟题
  • 原文地址:https://www.cnblogs.com/freestyle-le/p/4561070.html
Copyright © 2020-2023  润新知