在文本框中输入select * from contract_management where contract_id like '%jh%',通过form表单提交,接收到的字符串变成了select * from contract_management where contract_id like \'%jh%\',请教高手这是怎么回事,谢谢!

解决方案 »

  1.   

    magic_quote_gpc自动转义了吧?
    关闭magic_quote_gpc
      

  2.   


    function array_map_recursive($array){ 
      $r = array(); 
      if(is_array($array)){
        foreach($array as $key => &$value){
          if(is_scalar($value)){
           $r[$key] =  stripslashes($value);
         }else{
            $r[$key] = array_map_recursive($value);
          }
        }
      }
      return $r; 
    }
    if(get_magic_quotes_gpc()){
      $_GET=array_map_recursive($_GET);
      $_POST=array_map_recursive($_POST);
      $_REQUEST=array_map_recursive($_REQUEST);
      $_COOKIE=array_map_recursive($_COOKIE);
      $_SESSION=array_map_recursive($_SESSION);
    }
      

  3.   

    我刚才使用了一下 用post 提交  $__REQUEST  接受  就是楼主说的那种效果 
      

  4.   

    在以前的php版本 magic_quote_gpc 是默认打开的.自动过滤一些安全隐患字符.
      

  5.   

    magic_quote_gpc把这个关的话你的网站很有可能被别人注入- -不建议关。。
    可是楼主为什么要 用POST传 数据库语句?- -。。
      

  6.   

    magic_quote_gpc在新版本的php(5.3以上)里已经废止了,现在还用反而影响程序的兼容性。
    即使是对SQL注入进行防御,也不应该依赖于这个函数,而应该采用数据访问层上的addslashes转义或者变量绑定等其它方式实现。