如果选择表单中没有选项值,则显示错误

时间:2017-07-19 16:47:10

标签: php mysql

如果标题不够清楚,请注意以下是解释: 我有一个名为“perso”的MYSQL数据库,其中包含“perso_name”。 perso_name与我的选择表单中的值相同。这是HTML代码:

<form method="post">
<select name="selectperso" onchange="showUser(this.value)">
    <option value="op1">Option1</option>
    <option value="op2">Option2</option>
</select>
<input type="submit" name="validperso" value="Confirm">
</form>

这是PHP代码:

 <?php 
$error = 0;
if (isset($_POST['validperso'])) {

    if ($error !== 0) {

        echo"<script>alert(\"Error\")</script>"; }

    else {

        echo "<script>alert(\"Working\")</script>"; 

    }

}
 ?>

现在,我想做的事情有点棘手。

假设我的数据库中有“op3”,但用户无法拥有它。问题是用户可以将值“op1”修改为“op3”,然后他将拥有op3。我想提出一个条件,说“如果用户选择select中可用的”op“值之一,那就没关系。否则,错误++。”

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

为了更好地实现目标,您可以将用户与DB 中的选项绑定(例如,像用户名和密码),然后每次验证用户和选项。

另一种方法可以使用正确的选项和用户映射隐藏字段。并且每次您都可以将用户选择的选项与隐藏字段值进行匹配。这不是安全的方法。

答案 1 :(得分:0)

好的,我写了更多关于你问题的信息。

通常你需要的是whitelisting - 你创建了一些允许用户使用的东西的列表。

它可以是简单的数组:

$allowed_options = ['op1','op2','op3'];
if (!in_array($userInput, $allowed_options)) {
    // input not allowed, do something
}

或者更复杂的逻辑,比如对mysql的查询:

select * from table where option = "USER_INPUT" and user_role = 'SOME_ROLE'

无论如何,只有作为开发者知道如何限制用户的活动。

例如,如果您从值数组创建select

foreach ($values as $v) {
    echo '<option value="' . $v . '">VALUE</option>";
}

然后使用相同的数组$values来检查是否允许用户输入。

与mysql查询或其他获取所需内容的方式相同。