使用 PHP 验证选择框?

PHP*_*VER 3 php validation select drop-down-menu

我已经用 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>
Run Code Online (Sandbox Code Playgroud)

基本上我写了下面的 php 代码,认为它会验证它,但无论我是否使用 Firebug 在浏览器中篡改这些值,它总是返回性别无效错误。

我的编辑个人资料表单的其余部分工作正常,选择框也工作正常(无需验证),但显然我需要验证它,因为用户个人资料的数据库中没有更新男性、女性或没有任何更新。我做了 mysql_real_escape 字符串等,但出于简单性等原因没有在此处添加。

$gender = $_POST['gender'];

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

如果有人可以解释我如何检查选择框中的值以确保它们不被篡改并且包含男性、女性或不包含任何值,我将不胜感激。也许我的做法是错误的。

Bra*_*rad 5

问题不在于选择值,而在于您的条件。我想你想要这个:

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

请注意,所有条件都通过 AND 组合在一起。


mar*_*rio 5

一种更简单的方法是将变量与允许值列表进行比较:

if (!in_array($gender, array("", "Male", "Female"))) {
    $error[] =
Run Code Online (Sandbox Code Playgroud)

请注意数组列表还包含空""字符串。