Как проверить, соответствует ли выпадающий список оператору if [PHP]

0

Я кодировал сценарий, и я застрял в одной маленькой части. Я проверяю, что форма, которую пользователь представляет, защищена. Но я не уверен, как подойти к выпадающему списку, это код, который у меня есть до сих пор:

if ($_POST['type'] != '1' || $_POST['type'] != '2' || $_POST['type'] != '3') // Checks to see if the submitted type matches, prevents exploiting.
{
    $supportErrors[] = "Support type you've chosen was not found, possibly trying to exploit this script?";
}

Я не уверен, что это правильный способ проверить его значение. Это моя сторона HTML для этой части скрипта:

<select name="type" id="type" size="1" style="border: 1px solid #000000; background-color: #FFFFFF;">
      <option value="1" selected>Support</option>
      <option value="2">Question</option>
      <option value="3">Complaint</option>
</select>

Теперь, на мой взгляд, значение - это размещенные данные VIA 'type' - поэтому, на мой взгляд, не следует публиковать это значение (1 или 2 или 3), а затем на стороне PHP, он проверяет, является ли оно isn 't 1, 2 или 3?

  • 1
    в чем ошибка?
  • 0
    какая ошибка? пожалуйста, добавьте ошибку
Показать ещё 3 комментария
Теги:

4 ответа

2
Лучший ответ

in_array() является хорошим решением при проверке, соответствует ли одна вещь одной из нескольких опций

if (!in_array($_POST['type'],array(1,2,3))){..}

вы должны развиваться с включенными ошибками:

error_reporting(E_ALL);
ini_set('display_errors', 1);
  • 0
    Не работает. Пустая страница, вы видите.
  • 0
    мои плохие дополнительные) нужны, исправлены. но пустая страница означает вашу разработку с отключенной проверкой ошибок, что является плохой идеей
Показать ещё 1 комментарий
1

Вам нужно изменить логику состояния от OR до AND:

if($_POST['type'] != '1' && $_POST['type'] != '2' && $_POST['type'] != '3')...

0
//  Assumimg type as a numeric value , I might achieve it like this

    $type = 0;

    if( isset( $_POST['type'] ) ) $type = trim( $_POST['type'] ) * 1;

    if( $type < 1 )
    {
        $supportErrors[] = "Please specify type";
    }
    elseif( $type > 3 )
    {
        $supportErrors[] = "Invalid type";
    }
0

Обязательно используйте ISSET, чтобы проверить, была ли форма отправлена

<?php
if ( isset( $_POST['type'] ) and $_POST['type'] != '1' || $_POST['type'] != '2' || $_POST['type'] != '3') // Checks to see if the submitted type matches, prevents exploiting.
{
    $supportErrors[] = ("Support type you've chosen was not found, possibly trying to exploit this script?");
}
?>
  • 0
    По какой-то причине, он все еще возвращает $ supporterrors ..

Ещё вопросы

Сообщество Overcoder
Наверх
Меню