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" в форму ?
     
  2. 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.
  3. 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 {
       
    // вывод ошибки, если выбрано неправильное значение
    }
     
  4. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202