使用PHP验证选择框?

时间:2011-04-11 21:24:05

标签: php select drop-down-menu validation

我已经用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 个答案:

答案 0 :(得分:4)

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

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

请注意,所有条件都是AND'd。

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:0)

尝试if(!empty($gender) && $gender != "Male" && $gender != "Female"){ ??

答案 3 :(得分:0)

||更改为&&。你需要确保性别不是男性而不是女性,而不是其中一个。

答案 4 :(得分:-1)

if(!($gender == "" || $gender == "Male" || $gender == "Female")){怎么样?

答案 5 :(得分:-1)

男性和女性是选择标记中的唯一选项:

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

不会为男性选择任何选择,因此没有选择进行选择。

保持简单;这样,它就不容易出错:)