zoukankan      html  css  js  c++  java
  • 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;
    
    
  • 相关阅读:
    Entity Framework中的多个库操作批量提交、事务处理
    Entity Framework with NOLOCK
    在Entity Framework 中执行T-sql语句
    Entity Framework Extended Library (EF扩展类库,支持批量更新、删除、合并多个查询等)
    Visual Studio 2010 更新NuGet Package Manager出错解决办法
    html判断IE版本
    Java基础-学习笔记(七)——this关键字
    Java基础-学习笔记(六)——类的封装性
    Java基础-学习笔记(五)——面向过程和面向对象的区别
    Java基础-学习笔记(四)-流程控制
  • 原文地址:https://www.cnblogs.com/freestyle-le/p/4561070.html
Copyright © 2011-2022 走看看