Вопрос

У меня есть система регистрации, которая запрашивает имя пользователя. У некоторых людей есть апостроф в своей фамилии, и она предотвращает записать данные в таблицу базы данных MySQL (например, O'HARE).

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

Я думал, что смогу сделать проверку имени с веб-сервисом, прежде чем использовать MySQL_REAL_ESCAPE_STRING, но может ли это дать недостаток безопасности? Или Weap Web Services уже выполняет свои собственные проверки для чистых входов?

Или есть ли лучший способ пройти через переменную, в которой PHP сохраняет апостроф, но все же сохраняет ее безопасным, а MySQL может принять это?

Это было полезно?

Решение

Вы должны показать нам какой-то код, потому что mysql_real_escape_string Не удаляет апостроф, но только избежать их.
Сбежание средств O'Hare станет O\'Hare так что его можно вставить в виде строки: 'O\'Hare'. Отказ После поиска из базы данных ваша стоимость все равно должна быть оригиналом O'Hare.

Итак, если ApoStrophe «потерян», вероятно, является ошибкой где-то еще в вашей логике программы.

Другой вариант - переключиться с использованием библиотеки MySQL в библиотеку MySQLI или PDO для доступа к вашей базе данных. Последние две подготовлены подготовленные заявления. Подготовленные заявления, как правило, считаются наилучшей практикой для запроса вашей базы данных.

Другие советы

mysql_real_escape_string() не удалит апострофы.

Ваша проблема скорее всего на стороне выходных данных или другой другой функции возиться с входом.

Вы должны иметь соединение с базой данных, прежде чем использовать mysql_real_escape_string Или это будет неисправность.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top