Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Чем отличается mysql_real_escape_string от mysql_escape_string
 
 автор: Mookapek   (09.11.2009 в 22:33)   письмо автору
 
 

?

  Ответить  
 
 автор: neadekvat   (09.11.2009 в 22:39)   письмо автору
 
   для: Mookapek   (09.11.2009 в 22:33)
 

mysql_real_escape_string() является усовершенствованной версией функции mysql_escape_string(), широко применяемой для формирования безопасных запросов к БД MySQL. Отличия этих двух функций в том, что mysql_real_escape_string() правильно работает с многобайтовыми кодировками.

Предположим, в обрабатываемых данных есть символ (скажем, в UTF-8), код которого состоит из двух байт — шестнадцатеричных 27 и 2B (десятичные 39 и 43 соответственно). mysql_escape_string() воспринимает каждый байт передаваемых ей данных как отдельный символ (точнее, как код отдельного символа) и решит, что последовательность байт 27 и 2B — это два разных символа: одинарная кавычка (') и плюс (+). Поскольку функция воспринимает кавычку как специальный символ, перед байтом с кодом 27, который на самом деле является частью какого-то безобидного символа, будет добавлен слэш (\). В результате данные отправятся в базу в искаженном виде.

Стоит отметить, что mysql_real_escape_string() работает правильно во всех случаях и может полностью заменить mysql_escape_string().

mysql_real_escape_string() доступна в PHP с версии 4.3.0.

  Ответить  
 
 автор: Trianon   (09.11.2009 в 22:41)   письмо автору
 
   для: neadekvat   (09.11.2009 в 22:39)
 

нет в utf-8 таких символов. По определению нет.

  Ответить  
 
 автор: neadekvat   (09.11.2009 в 22:56)   письмо автору
 
   для: Trianon   (09.11.2009 в 22:41)
 

Первая ссылка по запросу "отличия mysql_escape_string и mysql_real_escape_string":
http://webew.ru/articles/2078.webew
~середина страницы.
Не сам придумал, но и проверить правильность не мог, т.к. в кодировках не силен.
Да и спрашивалось все равно другое, и пример, хоть и не правильный (по вашим словам), но наглядный.

  Ответить  
 
 автор: Trianon   (09.11.2009 в 23:05)   письмо автору
 
   для: neadekvat   (09.11.2009 в 22:56)
 

вот вот. Вы перепели без цитирования фрагмент чужой статьи.
А коль так - за достоверность приведенных фактов пришлось отвечать именно Вам.
Зачем? Тащил кто за язык?

Между прочим, на этом форуме была тема со ссылкой на корректное исследование, где приводились кодировки, в которых mysql_escape_string дает сбой. Это кодировки языков восточноазиатского региона, отличные от utf8.
И таки я до сих пор не понимаю, что помешало Mookapek'у эту тему обнаружить.
По поиску слова mysql_real_escape_string эта тема находится на раз.
http://softtime.ru/forum/read.php?id_forum=1&id_theme=66935

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

  Ответить  
 
 автор: neadekvat   (09.11.2009 в 23:11)   письмо автору
 
   для: Trianon   (09.11.2009 в 23:05)
 

Сотел дать ссылку сюда: http://lmgtfy.com/ но потом глазами с этим текстом встретился и решил не вы...ся лишний раз :) Лучшеб вы..разил свое недовольствие.

  Ответить  
 
 автор: neadekvat   (09.11.2009 в 22:56)   письмо автору
 
   для: Trianon   (09.11.2009 в 22:41)
 

.

  Ответить  
 
 автор: asptema   (09.11.2009 в 23:17)   письмо автору
 
   для: Mookapek   (09.11.2009 в 22:33)
 

mysql_escape_string() не экраинрует % и _. Функция идентична mysql_real_escape_string(), исключая то, что mysql_real_escape_string() принимает параметром ещё и указатель на соединение и экранирует в зависимости от кодировки. mysql_escape_string() не делает этого и результат работы не зависит от кодировки, в который вы работаете с БД.
---------------------
PS. могу скинуть официальный справочник РНР-функций на русском (примерно половина переведена)

  Ответить  
 
 автор: cheops   (10.11.2009 в 12:44)   письмо автору
 
   для: Mookapek   (09.11.2009 в 22:33)
 

Кроме того mysql_real_escape_string() требует соединения с базой данных, в то время как mysql_escape_string() может использоваться без установленного соединения.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования