这种情况是在 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);
}
|