这种情况是在 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); } |
时间: 2024-09-21 22:29:20