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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: mysql_escape_string()

Сообщения:  [1-10]    [11-20]  [21-21] 

 
 автор: sim5   (02.03.2007 в 17:42)   письмо автору
 
   для: Trianon   (02.03.2007 в 17:39)
 

Спасибо - попробуем.

   
 
 автор: Trianon   (02.03.2007 в 17:39)   письмо автору
 
   для: sim5   (02.03.2007 в 17:31)
 

Напечатайте запрос непосредственно перед db_query. Чудес на свете не бывает.
$sql = "UPDATE......";
echo htmlspecialchars($sql);
db_query($sql);

   
 
 автор: sim5   (02.03.2007 в 17:31)   письмо автору
 
   для: sim5   (02.03.2007 в 16:17)
 

Resume. Как говорится "Пора и чин знать" - спасибо и на этом. Будем что "нибудь думать".

P.S. Наверное беда мануалов - это изложение материала как об аксиоме, и не слова о возможных "исключениях", из-за которых можно набить "шишку"...

   
 
 автор: sim5   (02.03.2007 в 16:17)   письмо автору
 
   для: Trianon   (02.03.2007 в 16:09)
 

Вот так и выглядет $row[0] = mysql_escape_string($row[0]);

cp1251_general_ci.

   
 
 автор: Trianon   (02.03.2007 в 16:09)   письмо автору
 
   для: sim5   (02.03.2007 в 15:52)
 

>применяю mysql_escape_string($row[0]),
Каким образом? Как точно выглядит оператор?

$row[0] = mysql_escape_string($row[0]); 
?
и еще один важный момент. У Вас данные, часом, не в utf-8?

   
 
 автор: sim5   (02.03.2007 в 15:52)   письмо автору
 
   для: Trianon   (02.03.2007 в 15:41)
 

Ну собственно ничего не обычного нет вот буру имя товара из таблицы:

$q = db_query("SELECT name FROM ".PRODUCTS_TABLE." WHERE productID=".$prz[0].";") or die (db_error());
$row = db_fetch_row($q);

Далее перед помещением его в другую таблицу для $row[0] применяю mysql_escape_string($row[0]), причем перед этим хоть применяй хоть нет stripslashes, всеравно в итоге ошибка.

Затем помещаю в другую таблицу:

db_query("UPDATE ".PRIZES_TABLE." SET priz='$row[0]', ........

   
 
 автор: Trianon   (02.03.2007 в 15:41)   письмо автору
 
   для: sim5   (02.03.2007 в 15:34)
 

>Ну если она не может вкупе обработать одинарные и двойные кавычки, то значит я в любом случае получил бы ошибку?
Еще раз. Текстовые данные MySQL могут содержать любые символы в любых сочетаниях. Люди в них двоичные объекты хранят вроде фотографий, и никаких искажений не происходит. Просто их нужно научиться правильно передавать в БД, извлекать и применять.

приведите небольшой фрагмент кода - маленький пример рассмотрим чтоли... дабы прояснить происходящее.

   
 
 автор: sim5   (02.03.2007 в 15:34)   письмо автору
 
   для: Trianon   (02.03.2007 в 15:01)
 

Да в том то и дело, что при помещении данных в другую таблицу я применяю mysql_escape_string. Ну если она не может вкупе обработать одинарные и двойные кавычки, то значит я в любом случае получил бы ошибку?

У хостера magic_quotes включен, значит надо его самому выключить, и все переписать.
На форуме об обработке данных много вопросов было и практически везде советовался mysql_escape_string. Я ведь не ДОКА как многие здесь, вот и последовал совету.

И вот что мне сейчас сделать (что лучше), чтобы исключить подобные ошибки, и чтобы это было надежно в части безопасности?

Тогда мне не понятно - что при INSERT (так был втавлен товар и ошибки не возникало) mysql_escape_string ведет себя так, а при UPDATE (так этот товар вставляется в другую таблицу) совсем по другому? Или я просто вообще ничего не понимаю.

   
 
 автор: DEM   (02.03.2007 в 15:12)   письмо автору
 
   для: Trianon   (02.03.2007 в 15:04)
 

Хс... теперь буду знать, паиб...

   
 
 автор: Trianon   (02.03.2007 в 15:04)   письмо автору
 
   для: DEM   (02.03.2007 в 14:59)
 

>Ну просто у меня тоже на Денвере писало такую ошибку, я использовал $login = str_replace("'", """, $login); и всё стало выводиться нормально.. (а точнее заносится в таблицу)

Да, конечно. Но Вы не исправили ошибку, и даже не нашли её. Вы лишь загнали симптомы болезни внутрь, добавив, если уж переходить на язык медиков, путем применения кривого антибиотика(htmlspecialchars) латентный побочный эффект (превращение текстового контента в html-ный ). В самый неподходящий момент она (болезнь) выползет, и Вы получите массу сюрпризов.

   

Сообщения:  [1-10]    [11-20]  [21-21] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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