|
|
|
|
|
для: 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 в 16:17)
| | Resume. Как говорится "Пора и чин знать" - спасибо и на этом. Будем что "нибудь думать".
P.S. Наверное беда мануалов - это изложение материала как об аксиоме, и не слова о возможных "исключениях", из-за которых можно набить "шишку"... | |
|
|
|
|
|
|
|
для: Trianon
(02.03.2007 в 16:09)
| | Вот так и выглядет $row[0] = mysql_escape_string($row[0]);
cp1251_general_ci. | |
|
|
|
|
|
|
|
для: sim5
(02.03.2007 в 15:52)
| | >применяю mysql_escape_string($row[0]),
Каким образом? Как точно выглядит оператор?
$row[0] = mysql_escape_string($row[0]);
| ?
и еще один важный момент. У Вас данные, часом, не в utf-8? | |
|
|
|
|
|
|
|
для: 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]', ........ | |
|
|
|
|
|
|
|
для: sim5
(02.03.2007 в 15:34)
| | >Ну если она не может вкупе обработать одинарные и двойные кавычки, то значит я в любом случае получил бы ошибку?
Еще раз. Текстовые данные MySQL могут содержать любые символы в любых сочетаниях. Люди в них двоичные объекты хранят вроде фотографий, и никаких искажений не происходит. Просто их нужно научиться правильно передавать в БД, извлекать и применять.
приведите небольшой фрагмент кода - маленький пример рассмотрим чтоли... дабы прояснить происходящее. | |
|
|
|
|
|
|
|
для: Trianon
(02.03.2007 в 15:01)
| | Да в том то и дело, что при помещении данных в другую таблицу я применяю mysql_escape_string. Ну если она не может вкупе обработать одинарные и двойные кавычки, то значит я в любом случае получил бы ошибку?
У хостера magic_quotes включен, значит надо его самому выключить, и все переписать.
На форуме об обработке данных много вопросов было и практически везде советовался mysql_escape_string. Я ведь не ДОКА как многие здесь, вот и последовал совету.
И вот что мне сейчас сделать (что лучше), чтобы исключить подобные ошибки, и чтобы это было надежно в части безопасности?
Тогда мне не понятно - что при INSERT (так был втавлен товар и ошибки не возникало) mysql_escape_string ведет себя так, а при UPDATE (так этот товар вставляется в другую таблицу) совсем по другому? Или я просто вообще ничего не понимаю. | |
|
|
|
|
|
|
|
для: Trianon
(02.03.2007 в 15:04)
| | Хс... теперь буду знать, паиб... | |
|
|
|
|
|
|
|
для: DEM
(02.03.2007 в 14:59)
| | >Ну просто у меня тоже на Денвере писало такую ошибку, я использовал $login = str_replace("'", """, $login); и всё стало выводиться нормально.. (а точнее заносится в таблицу)
Да, конечно. Но Вы не исправили ошибку, и даже не нашли её. Вы лишь загнали симптомы болезни внутрь, добавив, если уж переходить на язык медиков, путем применения кривого антибиотика(htmlspecialchars) латентный побочный эффект (превращение текстового контента в html-ный ). В самый неподходящий момент она (болезнь) выползет, и Вы получите массу сюрпризов. | |
|
|
|
|