【问题标题】:another stripslashes problem另一个stripslashes问题
【发布时间】:2011-08-15 00:15:24
【问题描述】:

我没有找到真正的解决方案。 和其他许多人一样,我现在使用 jquery wysiwyg 编辑器并将输出保存在 mysql 中。当我重新加载到编辑器并再次保存时,就会出现问题。每次按提交时,反斜杠和“标记都会增加。 在写入数据库之前,我会做一个mysql_real_escape_string()

我递归地使用 strpslashes 但它不起作用。

function decodeEscapedString($value) {
  if (get_magic_quotes_gpc()) {

     $value = is_array($value) ?
       array_map(array('self', 'decodeEscapedString'), $value) :
       stripslashes($value);

     return $value;

  } else
     return stripslashes($value);
}

有人有什么想法吗? 谢谢

【问题讨论】:

  • 至少在 PHP 5.4 中不会有魔术引号
  • 如果你已经控制了服务器,为什么不首先禁用魔术引号呢?它使一切变得容易得多。

标签: php mysql recursion mysql-real-escape-string stripslashes


【解决方案1】:

我会说你有一个轻微的逻辑错误以及一个可能的参考错误,你在array_map() 中有'self'

假设这是一个类方法,试试这样的

public function filter($value)
{
    return get_magic_quotes_gpc() ? $this->clean($value) : $value;
}

protected function clean($value)
{
    return is_array($value) ? array_map(array($this, 'clean'), $value) : stripslashes($value);
}

然后您只需调用filter() 方法,例如

$value = $obj->filter($_POST['something']);

改编自http://blog.philipbrown.id.au/2008/10/zend-framework-forms-and-magic_quotes_gpc/

【讨论】:

    猜你喜欢
    • 2011-05-17
    • 1970-01-01
    • 2011-05-05
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多