За последние 24 часа нас посетили 16419 программистов и 1549 роботов. Сейчас ищут 2072 программиста ...

mysqli

Тема в разделе "MySQL", создана пользователем skrippt, 8 апр 2016.

  1. skrippt

    skrippt Новичок

    С нами с:
    7 апр 2016
    Сообщения:
    8
    Симпатии:
    0
    Здравствуйте у меня возник вопрос по mysqli а именно о Подготавливаемых запросах
    Вот как я подключаюсь к mysql и выполняю запросы

    Код (Text):
    1. $_GET['ima'];//Переменая которую передает пользователь
    2.  
    3. //соиденяемся с базой даных---------------------------------------
    4. $bdlocation="localhost";
    5. $bduser="444ppt";
    6. $bdpasswd="V44G5Xh";
    7. $connect=mysqli_connect($bdlocation, $bduser, $bdpasswd, "servis");
    8. //----------------------------------------------------------------
    9.  
    10.  
    11. //Подготавливаем запрос--------------------------------------------------------------------------------
    12. $stmt = mysqli_prepare($connect, "SELECT * FROM  `moheynik` WHERE  `ima` = ? ORDER BY  `moheynik`.`id` ASC ")
    13. //-----------------------------------------------------------------------------------------------------
    14.  
    15. //привязываем переменные к параметрам---------------------------------------------------------------
    16. mysqli_stmt_bind_param($stmt, "s", $_GET['ima']);
    17. //------------------------------------------------------------------------------------------------
    18.  
    19. //запускаем запрос------------------------------------------------------------------------------------------
    20. mysqli_stmt_execute($stmt);
    21. //-----------------------------------------------------------------------------------------------------------------
    22.  
    23. //Возвращаем  результат--------------------------------------------------------------------------------------------
    24. mysqli_stmt_store_result($stmt);
    25. //-----------------------------------------------------------------------------------------------------------------
    26.  
    27. //функции по обработке результата--------------------------------------------------------------------------------------------
    28. echo   mysqli_stmt_num_rows($stmt);
    29. //-------------------------------------------------------------------------------------------------------------
    30.  
    31.  
    32. //закриваем соиденения
    33. mysqli_stmt_close($stmt);
    34.  
    35. mysqli_close($connect);
    Так вот правильно ли я все делаю?
    Особенно интересует вопрос безопасности данного запроса. Насколько он надежный можно ли сюда внедрить sql инъекцию? (Я так понял что сначала идет запрос в базу она начинает его обработку и затем в нее встраиваются наши данные тем самым невозможно выполнить sql инъекцию!)
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Не хватает установки кодировки соединения. Использовать суперглобальные массивы в логике - моветон.

    Добавлено спустя 9 минут 14 секунд:
    SQL-инъекция в плейсхолдер невозможна
     
  3. skrippt

    skrippt Новичок

    С нами с:
    7 апр 2016
    Сообщения:
    8
    Симпатии:
    0
    Не понял на счет массивов и логики моветон, объясните тупому по подробней
     
  4. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Не используй суперглобальные массивы в логике. А вообще по хорошему, лучше их обработку отдать одному классу и далее к ним обращаться через него. Так ты не будешь постоянно дублировать код.
     
  5. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Еще есть стандартная функция filter_input(). Сначала вытащи нужные данные из POST/GET/COOKIE, проверь и потом с ними работай.