Почему появляется ошибка, если if (mysql_num_rows($result22)>0) {

12
PN
На сайте с 22.08.2012
Offline
103
#11
postavkin:
Да. В одинарных.
Знаю глупость, но работает. У меня на входе, в обработчике стоит проверка на пробелы и кавычки.
$prov1 = substr_count($brand, "%20");
$prov2 = substr_count($brand, " ");
$prov3 = substr_count($brand, "'");

Для большей уверенности думаю ещё добавить
$brand = str_replace("=", "", $brand);

вообще неправильно. Во первых я напишу вместо ' %27 и вот вам sql-инъекция. А раз у вас одинарные кавычки в базе встречаются, то делается это так:


$brand = urldecode($brand);
$brand = str_replace("\\", "", $brand);
$brand = str_replace("'", "\\'", $brand);
Мой совет помог? Не скупись! Bitcoin 1Lseddet1o1B6odgXQHbGaWGwRkt1Db8Ef Ethereum 0x450f1a17461e25194B7F9226cDEe70173F39e1e1
P
На сайте с 06.01.2009
Offline
601
#12
proksey-net:
вообще неправильно. Во первых я напишу вместо ' %27 и вот вам sql-инъекция. А раз у вас одинарные кавычки в базе встречаются, то делается это так:

$brand = urldecode($brand);
$brand = str_replace("\\", "", $brand);
$brand = str_replace("'", "\\'", $brand);

%27 это не пробел ' OR ''=', это типо так 'OR''='?

Если да, то я доставил ещё проверку на '='.

Да и понял, нужно переменные взять в двойные кавычки.

Простите, а от куда \ в запросе появится?

Сильно не пинайте, я только учусь, разбираюсь с этим делом.

Спасибо

---------- Post added 08-04-2015 at 14:40 ----------

proksey-net:

$brand = str_replace("'", "\\'", $brand);

На мой взгялд в этом конкретно, нет необходимости, так как в априори в названии бренда нет '

Поэтому скрипт просто отдаст ошибку если в бренде будет '

$prov4 = substr_count($brand, "'");

[umka]
На сайте с 25.05.2008
Offline
456
#13
proksey-net:
я напишу вместо ' %27 и

… и веб-сервер автоматически перекодирует %27 и передаст в скрипт '

proksey-net:
А раз у вас одинарные кавычки в базе встречаются, то делается это так

Это делается штатными escape-функциями mysql, о которых я написал выше.

Лог в помощь!
P
На сайте с 06.01.2009
Offline
601
#14
'[umka:
;13638018']Это делается штатными escape-функциями mysql, о которых я написал выше.

Спасибо оргомное. Обязательно ознакомлюсь. Просто сейчас пока сделал так.

Там надо освоить материал. Я пробежался, но это не быстро сделать. Нужно время.

vandamme
На сайте с 30.11.2008
Offline
675
#15

postavkin, Котеров 2008, глава 28.

[umka]
На сайте с 25.05.2008
Offline
456
#16

Там всё тоже самое, только вместо

str_replace(stripslashes(htmlspecialchars(strip_tags(и_другие_велосипеды(…)))))

делаете

mysql_real_escape_string(…)

всё.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий