我已经用PHP编码,但今天我第一次需要验证一个选择框,我很震惊地意识到我实际上并不确定如何。基本上这是我的HTML :(忽略代码中的会话内容)
<label for="gender">Gender</label>
<select id="gender" name="gender" class="select option">
<option<?php if( $_SESSION['gender'] === "" ) { echo ' selected="selected"'; } ?> value=""> </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";
}
如果有人可以解释我如何检查选择框中的值,以确保它们没有被篡改并包含男性,女性或没有值得赞赏的价值。也许我做错了。
答案 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')
不会为男性选择任何选择,因此没有选择进行选择。
保持简单;这样,它就不容易出错:)