Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: защита от sql инъекции
Форумы портала PHP.SU » » Вопросы новичков » защита от sql инъекции

Страниц (1): [1]
 

1. gheka - 26 Ноября, 2015 - 00:47:31 - перейти к сообщению
Здравствуйте есть запрос

PHP:
скопировать код в буфер обмена
  1.  
  2. $kl = 20;
  3.  
  4. $t = "SELECT * FROM `guest` WHERE `status`='%d' id DESC LIMIT %d,%d";
  5. $result = mysqli_query ( $LinkToBD, sprintf ( $t, mysqli_real_escape_string ( $LinkToBD, '0' ),
  6.                 mysqli_real_escape_string ( $LinkToBD, '3' ),
  7.                 mysqli_real_escape_string ( $LinkToBD, $_GET ['str'] ),
  8.                 mysqli_real_escape_string ( $LinkToBD, $kl ) ));
  9.  
  10.  


Есть проблема если допусти в адресной строке указать
test.ru/guest.php?str=1

то проходит нормально всё

если указать в запросе одинарную кавычку
test.ru/guest.php?str='

то вылазит ошибка
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-15,15' at line 1

Можно конечно проверять $_GET ['str'] на число например так is_int ($_GET ['str']) и это будет работать но может есть более правильный способ?
2. DeepVarvar - 26 Ноября, 2015 - 00:49:55 - перейти к сообщению
PDO + prepared statement
(Добавление)
В майскули препаред тоже есть.
3. gheka - 26 Ноября, 2015 - 01:08:41 - перейти к сообщению
DeepVarvar пишет:
PDO + prepared statement
(Добавление)
В майскули препаред тоже есть.


Но это решение для запроса написанного другим способом.
У меня процедурный стиль и в этом случае подготовку запроса не выполнить. Или я не прав?
Подскажите пожалуйста.
4. esterio - 26 Ноября, 2015 - 02:52:11 - перейти к сообщению
http://php.net/manual/ru/mysqli.prepare.php
есть процедурный стиль

 

Powered by ExBB FM 1.0 RC1