Валидировать поле выбора с помощью PHP? - PullRequest
3 голосов
/ 12 апреля 2011

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

<label for="gender">Gender</label>
<select id="gender" name="gender" class="select option">
<option<?php if( $_SESSION['gender'] === "" ) { echo ' selected="selected"'; } ?>  value="">&nbsp;</option>
<option<?php if( $_SESSION['gender'] === "Male" ) { echo ' selected="selected"'; } ?> value="Male">Male</option>
<option<?php if( $_SESSION['gender'] === "Female" ) { echo ' selected="selected"'; } ?> value="Female">Female</option>
</select>

В основном я написал приведенный ниже код php, думая, что он подтвердит его, но независимо от того, изменяю я значения или нет в браузере, используя Firebugвсегда возвращает пол, недействительная ошибка.

Остальная часть моей формы редактирования профиля работает нормально, так же как и поле выбора (без проверки), но, очевидно, мне нужно проверить его как мужской, женский или ничего не обновляется в базе данных наПрофиль пользователя.Я делаю строку mysql_real_escape и т. Д., Но не добавил, что здесь просто из-за простоты и т. Д.

$gender = $_POST['gender'];

if(!empty($gender) && $gender != "Male" || $gender != "Female"){
    $error[] = "Gender not valid";
}

Если кто-то может объяснить, как я проверяю значения из поля выбора, чтобы убедиться, что они не были подделаны и содержат мужской, женскийили нет значения, которое будет высоко ценится.Может быть, я делаю это неправильно.

Ответы [ 6 ]

4 голосов
/ 12 апреля 2011

Проблема не в выбранном значении, а в вашем условии.Я думаю, что вы хотите это вместо этого:

if(!empty($gender) && $gender != "Male" && $gender != "Female"){
    $error[] = "Gender not valid";
}

Обратите внимание, что все условные выражения - AND'd вместе.

3 голосов
/ 12 апреля 2011

Более простой способ - сравнить переменную со списком допустимых значений:

if (!in_array($gender, array("", "Male", "Female"))) {
    $error[] =

Обратите внимание, что список массивов также содержит пустую строку "".

0 голосов
/ 14 марта 2017

Мужчина и женщина как единственная опция в выбранном теге:

'selection'=> Input::get('selection')

Выбор не будет выбран для мужчины, поэтому нет возможности для выбора.

Просто будь проще; таким образом, он будет менее подвержен ошибкам:)

0 голосов
/ 12 апреля 2011

Измените || на &&. Вы должны убедиться, что пол не мужской, а не женский, ни тот, ни другой.

0 голосов
/ 12 апреля 2011

Пробовал if(!empty($gender) && $gender != "Male" && $gender != "Female"){ ??

0 голосов
/ 12 апреля 2011

Как насчет if(!($gender == "" || $gender == "Male" || $gender == "Female")){?

...