2009-10-03 3 views
2

Представьте себе:PHP: POST данные + апострофы

  • Форма данных содержит апостроф
  • форма получает представленный
  • POST данные получает сериализовать
  • POST данные записываются в базу данных
  • База данных извлекается
  • Данные не могут быть несертифицированы

Проблема найдена в сериализованных данных. Я пробовал без и с апострофом:

  • S: 7: "компании"; s: 12: "Компания Джос"
  • s: 7: "компания"; s: 14: "Компания Джо"

Я знаю, что данные POST добавили косые черты в цитаты и апострофы, но где-то мои косые черты удаляются, что нарушает сериализацию. Я не использую функцию stripslashes() в любом месте - любые идеи?

+0

Показать код пожалуйста. – strager

+0

Возможно, вы можете понять это, посмотрев на результат каждого этапа, который вы указали. – strager

ответ

0

Если вы пишете сериализованные данные в db и не используете какие-либо отношения или расширенную функциональность db, вы можете просто base64 кодировать сериализованные данные перед вставкой в ​​db и декодировать при чтении.

1

Вы уверены, что косая черта добавляется? Это происходит только в случае активации Magic Quotes.

+0

Включено действие Magic Quotes, и добавлены косые черты. Я сузился до следующего: в моем SQL-запросе я окружаю значения апострофами. Попробуйте следующее, и вы увидите, что «$ test =« компания »; s: 14:« Компания Джо »,« echo $ test; »возвращает строку БЕЗ косой черты. Вот почему косая черта отсутствует в DB. Но поскольку в сериализованной строке есть кавычки и апострофы, как мне вставлять в БД без использования! – 2009-10-03 22:29:00

+0

Я нашел решение. Несмотря на то, что Magic Quotes добавляет косую черту в POST-данные, вы должны сделать следующую добавку() к сериализованной строке, чтобы ее можно было добавить в базу данных, закрытую либо кавычками, либо апострофами. После того, как значение будет извлечено из БД и неэтериализовано, можно использовать stripslashes(). – 2009-10-03 22:58:51

+0

В качестве ответа на ваш первый вопрос: используйте подготовленный оператор, проверьте mysqli или pdo. – jeroen

Смежные вопросы