我有一个PHP (register.php)表单,在另一个文件(register- value . PHP)中进行验证。如果有错误或不完整的数据,用户将被发送回register.php来修改错误。
我有一个输入和下拉菜单的混合。如果有错误或不完整的数据,则将用户发送回register.php以修改错误。
表单使用$_SESSION保存从register- value .php传输的数据。虽然这适用于输入,但这并不完全适用于下拉菜单。下拉菜单选择工作,但我得到一个错误在我的error_log。这是一个示例下拉菜单。
<select id="gender" name="gender" tabindex="auto"/>
<option <?php if(($_SESSION['gender']) == '') { echo 'selected="selected"';} ?> value="">Select gender</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>
<option <?php if(($_SESSION['gender']) == 'Other') { echo 'selected="selected"';} ?> value="Other">Other</option>
</select>
这是我尝试过的:
<?php if(!empty($_SESSION['gender'])){unset($_SESSION['gender']);} //To destroy session if there isn't any ?>
代码
<select id="gender" name="gender" tabindex="auto"/>
<option <?php if(($_SESSION['gender']) == '') { echo 'selected="selected"';} ?> value="">Select gender</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>
<option <?php if(($_SESSION['gender']) == 'Other') { echo 'selected="selected"';} ?> value="Other">Other</option>
</select>
当我刷新页面从开始输入详细信息时,每次我没有选择一个选项,我在错误日志中得到以下错误。
未定义索引:性别
请问我该怎么做呢?解决方案感谢wookie919
if (array_key_exists('gender', $_SESSION)) {
if ($_SESSION['gender'] == '') {
$_SESSION[''] = 'Male';
}
elseif ($_SESSION['gender'] == 'Male') {
$_SESSION['gender'] = 'Male';
}
elseif ($_SESSION['gender'] == 'Female') {
$_SESSION['gender'] = 'Female';
}
elseif ($_SESSION['gender'] == 'Other') {
$_SESSION['gender'] = 'Other';
}
}
else {
$_SESSION['gender'] = '';
}
问题是,当$_SESSION['gender']
不存在时,您试图访问$_SESSION['gender']
。
因此,在尝试访问$_SESSION['gender']
之前,请检查索引'gender'
是否存在于$_SESSION
中:
if (array_key_exists('gender', $_SESSION)) {
// $_SESSION['gender'] exists
if ($_SESSION['gender'] == 'Male') {
}
// etc, etc,
}
else {
// $_SESSION['gender'] does not exist, so don't try to access it.
}