php - 如何在 PHP 中验证空且正确的选择选项
问题描述
使用以下代码验证选项的选择和正确选择,我在验证 PHP 中的元素时遇到问题:
- 如果我没有选择任何东西(使用默认 novalue 选项),我会收到错误消息
- 即使我选择另一个选项,除了
$select
未加载到之外,我再次收到未选择的错误消息$_POST['select']
我怎样才能解决这个问题?
<?php
$select = "novalue";
$select_err = "";
if($select == "test"){
$select_err = "Please select an option.";
} else{
$select = $_POST['select'];
}
?>
<html>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
<div class="form-group <?php echo (!empty($select_err)) ? 'has-error' : ''; ?>">
<label>Select Option</label>
<select class="custom-select" id="inputGroupSelect01">
<option value="novalue" <?php ($select == 'test')? 'selected' :''; ?>>Choose...</option>
<option value="Goa" <?php ($select == '1')? 'selected' :''; ?> >Goa</option>
<option value="Kashmir" <?php ($select== "2")? "selected":""; ?> >Kashmir</option>
<option value="Rajasthan" <?php ($select == "3")? "selected":""; ?> >Rajasthan</option>
</select>
<span class="help-block"><?php echo $select_err; ?></span>
</div>
<div class="form-group">
<input type="submit" class="btn btn-primary" value="Login" name="submit">
</div>
</form>
</html>
解决方案
您的标签中缺少 name="select"。表单仅提交具有名称集的元素。
此外,您不会在第一行中使用 POST 值。改成:
if(isset($_POST['submit'])) {
$select = $_POST['select'];
$select_err = "";
if(empty($select)){
$select_err = "Please select an option.";
} else{
// here do stuff with the value...
}
}
然后应该修复只有在根本没有帖子时才显示表单的问题。如果有 postdata,您应该对其进行处理并显示响应。
推荐阅读
- python - 为什么将此数组与两个值而不是一个值进行比较?
- java - 如何在使用 Hadoop java api 完成 Mapreduce 作业后调用自定义方法?
- python - 获取字典中键的特定值?
- javascript - 是否可以使用 TypeScript 在 HTML 中“预渲染”一个 div?
- reactjs - 部署 React Web 应用微服务环境
- clojure - clojure 宏:无法解析符号
- bash - 如何从自定义 udev 规则运行具有正确权限的脚本?
- php - 将 MongoDB Aggregation $all (JS) 翻译成 Doctrine ODM Aggregation (PHP)
- java - 更改方法参考的类型
- html - 主元素不得作为节元素的后代出现