1

我将 Zend 框架与学说一起用于项目,问题是当我在数据库中插入像 O'Shea 这样的字符串时,它会插入 O\'Shea。我想这是因为双重转义。一个当我收到帖子时,一个当我使用教义时,为什么当我 print_r($_POST) 我得到的值已经转义了?

教义查询的语法是:

$req = $this->getRequest()->getPost();
$company = Doctrine::getTable('Project_Model_Companies')->find($company_id);
$company->name = $req['name'];
$company->save();

请帮助我如何避免这种双重转义,或者是什么问题?谢谢。

4

2 回答 2

6

听起来像magic_quote_gpc已打开。

您可以使用 get_magic_quotes_gpc 检查是否启用了魔术qoutes

echo (get_magic_quotes_gpc()) ? 'Magic qoutes Enabled' : "Magic qoutes Disabled";

我强烈推荐Disabling Magic Quotes

尝试以下 .htaccess 文件指令:

php_value magic_quotes_gpc Off 

或者在你的 php.ini

magic_quotes_gpc = Off
于 2011-05-19T07:39:16.840 回答
2

除了本杰明克雷默回答:

有时无法禁用魔术引号,请在索引文件中使用此代码以确保此问题不再困扰您:

if (get_magic_quotes_gpc()) {
  function stripslashes_deep($value)
  {
    $value = is_array($value) ?
          array_map('stripslashes_deep', $value) :
          stripslashes($value);

    return $value;
  }

  $_POST = array_map('stripslashes_deep', $_POST);
  $_GET = array_map('stripslashes_deep', $_GET);
  $_COOKIE = array_map('stripslashes_deep', $_COOKIE);
  $_REQUEST = array_map('stripslashes_deep', $_REQUEST);
}
于 2011-05-19T13:18:12.360 回答