PHP. Защита от мультивыбора

Discussion in 'PHP' started by GAiN, 17 Mar 2023.

  1. GAiN

    GAiN Elder - Старейшина

    Joined:
    2 Apr 2011
    Messages:
    2,550
    Likes Received:
    172
    Reputations:
    99
    Добрый вечер. Имеется форма с выбором значений и типом радио кнопка.
    <input type="radio">
    Как правильно и надёжно защитить такую форму на стороне php от запрета мультивыбора значений, если например подменить тип через просмотреть код в хроме и поставить вместо type="radio" - type="checkbox" в форму ?
     
    1. Skofield

      Skofield Elder - Старейшина

      Joined:
      27 Aug 2008
      Messages:
      960
      Likes Received:
      392
      Reputations:
      58
      Самое очевидное, что сразу же приходит в голову: проверить, в скрипте обработчике данных формы (на стороне php, т. е. на сервере), длину результирующего массива с именем ключа соответствующим имени атрибута name переключателя radio, - должна быть не больше 1. А если значений больше, то это уже не radio переключатель.
       
      #2 Skofield, 17 Mar 2023
      Last edited: 17 Mar 2023
      GAiN likes this.
      1. sherxan-g

        sherxan-g Member

        Joined:
        6 Jan 2016
        Messages:
        77
        Likes Received:
        18
        Reputations:
        0
        В PHP можно использовать функцию isset() для проверки того что переменная была установлена и не является пустой. Например
        PHP:
        if (isset($_POST['my_radio_button'])) {
           
        // обработка выбранного значения
        } else {
           
        // вывод ошибки, если ни одно значение не выбрано
        }
        Также можно использовать функцию count() для проверки количества выбранных значений, чтобы убедиться, что выбрано только одно значение
        PHP:
        if (count($_POST['my_radio_button']) == 1) {
           
        // обработка выбранного значения
        } else {
           
        // вывод ошибки, если выбрано более одного значения
        }
        Если значение type было подменено на checkbox, можно использовать проверку на соответствие значений, которые вы ожидаете получить. Например
        PHP:
        if ($_POST['my_radio_button'] == 'value1' || $_POST['my_radio_button'] == 'value2') {
           
        // обработка выбранного значения
        } else {
           
        // вывод ошибки, если выбрано неправильное значение
        }
         
        1. b3

          b3 Banned

          Joined:
          5 Dec 2004
          Messages:
          2,170
          Likes Received:
          1,155
          Reputations:
          202
          switch .. case

          https://www.php.net/manual/en/control-structures.switch.php
           
          GAiN likes this.