Zend Framework двойной выход - PullRequest
1 голос
/ 19 мая 2011

Я использую Zend Framework с доктриной для проекта, проблема в том, что когда я вставляю в базу данных строку типа O'Shea, она вставляет O \ 'Shea. Я думаю, это из-за двойного побега. Один, когда я получаю сообщение, и другой, когда я использую доктрину, почему, когда я печатаю __ ($ _ POST), я получаю значения, которые уже экранированы?

синтаксис запроса доктрины:

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

Пожалуйста, помогите мне, как избежать этого двойного побега, или в чем проблема? Спасибо.

Ответы [ 2 ]

6 голосов
/ 19 мая 2011

Звучит так, как будто magic_quote_gpc включено.

Вы можете проверить, включены или нет магические квоты, с помощью get_magic_quotes_gpc

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

Я очень рекомендую Отключение магических кавычек .

Попробуйте следующую директиву файла .htaccess:

php_value magic_quotes_gpc Off 

Или в вашем php.ini

magic_quotes_gpc = Off
2 голосов
/ 19 мая 2011

В дополнение к ответу Бенджамина Кремера:

Иногда магические кавычки не могут быть отключены, используйте этот код в индексном файле, чтобы эта проблема вас больше никогда не беспокоила:

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);
}
...