【发布时间】:2014-08-14 22:54:50
【问题描述】:
我有一个在另一个文件 (register-val.php) 中验证的 PHP (register.php) 表单。如果有错误或数据不完整,用户将被发送回 register.php 以修改错误。
我有输入和下拉菜单的混合。如果有错误或数据不完整,用户将被发送回 register.php 以修改错误。
表单使用 $_SESSION 保存从 register-val.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'] = '';
}
【问题讨论】: