ThinkPHP出现自动转义解决办法总结

作者:袖梨 2022-06-25

这种情况是在 php.ini中的magic_quotes_gpc 开启的情况下发生的。原因是thinkphp在入库的时候没有判断 magic_quotes_gpc 是否开启,直接进行了转义处理。

我的解决办法:在baseAction中自动执行

 代码如下 复制代码

public function _initialize()
      {
          //去除转义 不用系统的自动转义
          if (get_magic_quotes_gpc()) {
            $this->mystrip(&$_POST);
            $this->mystrip(&$_GET);
        }
      //去除转义方法
      public function mystrip($data){
          if (is_array($data)){
              foreach ($data as &$v){
                  $this->mystrip(&$v);
              }
          }else{
              $data = stripslashes($data);
          }
      }

或者在接收数据的时候处理

 代码如下 复制代码

$data['content'] = stripslashes(htmlspecialchars_decode($_POST['content']))

主要使用php中stripslashes函数

 

别人解决办法:是在入口文件增加如下代码则可:(没试过自己试试吧)

 代码如下 复制代码

if (!get_magic_quotes_gpc()) {
    function addslashes_deep($value) {
        $value = is_array($value) ?
            array_map('addslashes_deep', $value) :
            addslashes($value);
        return $value;
   }
   $_POST = array_map('addslashes_deep', $_POST);
   $_GET = array_map('addslashes_deep', $_GET);
   $_COOKIE = array_map('addslashes_deep', $_COOKIE);
   $_REQUEST = array_map('addslashes_deep', $_REQUEST);
}

相关文章

精彩推荐