php.ini中如何开启了magic_quotes_gpc,由于thinkphp在数据入库时未判断 magic_quotes_gpc是否开启,而直接进行了转义。本文介绍二个解决方法,供大家参考。
办法1:在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']))
主要使用stripslashes函数。
办法2:是在入口文件增加如下代码则可:(该方法未测试)
复制代码 代码示例:
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);
}