Как обрабатывать пользовательский ввод, содержащий кавычки (и т.д.)? - PullRequest
0 голосов
/ 26 сентября 2011

У меня есть стандартное поле ввода текста.Он получает значение от $_POST, и я использую его для построения запроса SQL (ODBC, а не только MySQL, если это имеет значение (или, например, я не могу использовать mysql_escape_string ())).

Запрос, который я создаю, имеет одинарные кавычки на PHP и двойные кавычки на SQL.Например:

$sql = 'SELECT * FROM ' . $table . ' WHERE field="' . $_POST['some_field'] . '"";

Если пользователь вводит двойные кавычки в свои входные данные, например, 6" wrench, я получаю ошибку SQL для несбалансированной строки (одинарная кавычка, как в O'reilly, не создает проблем).

Какой правильный способ справиться с этим?Опять же, Я использую интерфейс ODBC, а не MySQL .

Это просто вопрос addslashes()?Или волшебные цитаты?


Обновление: В руководстве PHP говорится о магических кавычках ...

Эта функция устарела с PHP 5.3.0.Полагаться на эту функцию крайне не рекомендуется.

(не то, чтобы они предлагали альтернативу; фактически, это также говорит о том, что магические кавычки будут отброшены в PHP 6)

Если ответиспользовать готовые заявления?

Ответы [ 3 ]

3 голосов
/ 26 сентября 2011
2 голосов
/ 26 сентября 2011

Использование odbc_prepare и odbc_execute как PDO

0 голосов
/ 26 сентября 2011

Еще проще ... почему бы просто не использовать htmlspecialchars?

http://us3.php.net/manual/en/function.htmlspecialchars.php

Я имею в виду, что это быстрее, и я предполагаю, что причина, по которой вы предоставляете пользователям поле данных, позволяющее им использовать кавычки, заключается в том, что вы собираетесь распечатать эти данные обратно в какой-то момент. Это все еще выполнимо, и вам не нужно менять место хранения своих данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...