Используя эту функцию PHP mysql_escape_string()
, вы можете быстро получить хорошую профилактику.
Например:
SELECT * FROM users WHERE name = '".mysql_escape_string($name_from_html_form)."'
mysql_escape_string
- Сбрасывает строку для использования в mysql_query
Для большей профилактики вы можете добавить в конце ...
wHERE 1=1 or LIMIT 1
Наконец вы получаете:
SELECT * FROM users WHERE name = '".mysql_escape_string($name_from_html_form)."' LIMIT 1
Вы не должны обычно использовать символьную сущность HTML, если Ваш редактор поддерживает Unicode. Объекты могут быть полезными когда:
код более ясен, чем соответствующий пробельный символ. <
, &
, или "
. На основе комментариев я получил, я изучил это немного далее. Кажется, что в настоящее время лучшая практика должна воздержаться от объектов HTML использования и использовать фактический символ UTF-8 вместо этого . Перечисленные причины следующие:
, пока кодирование Вашей страницы правильно установлено на UTF-8, необходимо использовать фактический символ вместо объекта HTML. Я прочитал несколько документов об этой теме, но самые полезные были:
От UTF-8: статья Secret of Character Encoding :
Википедия является большим тематическим исследованием на предмет приложения, которое первоначально использовало ISO-8859-1, но переключилось на UTF-8, когда это стало слишком громоздким для поддержки иностранных языков. Боты теперь на самом деле пройдут статьи и преобразуют символьную сущность в их соответствующие реальные символы ради удобного для пользователя и searchability.
, Что статья также дает хороший пример, включающий китайское кодирование. Вот сокращенный пример ради лени:
UTF-8:
這兩個字是甚麼意思
Объекты HTML :
這兩個字是甚麼意思
UTF-8 и кодировка объекта HTML оба бессмысленны мне, но , по крайней мере, кодировка UTF-8 является распознаваемой как иностранный язык , и это представит правильно в окне редактирования. Статья продолжает неотступно следование за HTML закодированная объектом версия:
Чрезвычайно неудобный для тех из нас, кто на самом деле знает, какова символьная сущность, полностью непонятна бедным пользователям, которые не делают! Даже немного более удобная для пользователя, "понятная" символьная сущность как & тета; оставит пользователей, которые не заинтересованы изучением HTML, царапающего их головы. С другой стороны, если они будут видеть Оё в окне редактирования, они будут знать, что это - специальный символ, и рассматривайте его соответственно, даже если они не знают, как записать что символ сами.
, Поскольку другие отметили, все еще необходимо использовать объекты HTML для зарезервированных символов XML (амперсанд, меньше, больше - чем).
Я не использовал бы UTF-8 для символов, которые легко перепутаны визуально. Например, трудно отличить emdash от минус, или особенно неразрывное пространство от пространства. Для этих символов определенно используйте объекты.
символы For, которые понятны визуально (такие как китайские примеры выше), разрешение и используют UTF-8, если Вам нравится.
Лично я делаю все в utf-8 с долгого времени, однако, в странице HTML, всегда необходимо преобразовывать амперсанды (&), больше, чем (>) и меньший затем (<) символы к их эквивалентным объектам, & усилитель; & gt; и & лейтенант;
кроме того, если Вы предназначаете при выполнении некоторого программирования с помощью utf-8 текст, существуют некоторые вещь наблюдать за.
Объекты могут купить Вас некоторая совместимость с глупыми клиентами, которые не понимают кодировку правильно. Я не полагаю, что это включает любые текущие браузеры, но Вы никогда не знаете то, что другие виды программ могли бы подбрасывать Вас ударом.
более полезный, тем не менее, то, что объекты HTML защищают Вас от Ваших собственных ошибок: если Вы неправильно конфигурируете что-то на сервере, и Вы заканчиваете тем, что служили странице с HTTP-заголовком, который говорит, что это ISO-8859-1
и META
тег, который говорит, что это UTF-8
, по крайней мере, Ваш & mdash; es будет всегда работать.
Объекты HTML полезны, когда Вы хотите генерировать содержание, которое будет включенным (динамично) в страницы с (несколькими) различная кодировка. Например, у нас есть белое содержание маркировки, которое включено и в ISO-8859-1 и в закодированные веб-страницы UTF-8...
, Если преобразование набора символов из UTF-8 не было такой большой ненадежной путаницей (Вы всегда спотыкаетесь некоторые символы и некоторые инструменты, которые не преобразовывают правильно), стандартизируя на UTF-8 был бы способ пойти.
Если Ваши страницы правильно кодируются в utf-8, у Вас не должно быть потребности в объектах HTML, просто использовать символы, которые Вы хотите непосредственно.
Все предыдущие ответы имеют смысл мне.
, Кроме того: Это главным образом зависит от редактора Вы намерение использовать и язык документа. Поскольку минимальное требование для редактора - то, что это поддерживает язык документа. Это означает, что, если Ваш текст находится на японском языке, остерегайтесь использования редактора, который не показывает им (т.е. никакие объекты для самого документа). Если его английский язык, можно даже использовать старого подобного энергии редактора и использовать объекты только для родственника редко & копия; и друзья. Конечно: & gt; для> и другое экстренное сообщение HTML все еще нуждаются в Escape. Но даже с другим латинским 1 языком (немецкий, французский язык и т.д.) пишущий ä боль в Вас, знают где...
, Кроме того, я лично пишу объекты для невидимых символов и тех, которые выглядят подобными стандартному ASCII и поэтому легко смущены. Например, существует u1173 (бывший похожий на тире в некоторых наборах символов) или u1175, который похож на вертикальную панель. Я использовал бы объекты для тех в любом случае.