如果标题不够清楚,请注意以下是解释: 我有一个名为“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“值之一,那就没关系。否则,错误++。”
感谢您的帮助!
答案 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查询或其他获取所需内容的方式相同。