我试图了解如何创建html表单。
令我担心的主要问题-使用开发者控制台更改输入值(例如选择输入)
<select name="select">
<option value="0">ex 1</option>
<option value="1">ex 2</option>
</select>
用户只需按F12并更改提交到服务器的值即可:
<select name="select">
<option value="99999">ex 1</option>
<option value="12345">ex 2</option>
</select>
因此,错误的值将提交给服务器。
如何解决此问题?
我了解您可以在服务器上检查允许的值,但是如果有很多选择怎么办?
我看到了实施表单的站点,并且如果以此方式更改值,服务器仍将正确处理传入的数据(将显示正确的数据或通过AJAX加载正确的表单)。我不了解表单如何通过开发者控制台忽略值更改。
对不起,我的英语不好。
答案 0 :(得分:0)
检查服务器端是否存在发送值,在数据库或常量中列出所有可能的值,并检查发送值。
(对不起,我的英语)
答案 1 :(得分:0)
我觉得这应该是一条评论,因为这个问题涉及面很广,但是字符数限制等...
如果仅希望用户能够从预定义列表中进行选择,请在后端验证中完全实现该行为。
例如:
$allowed_values = [0,1];
if (!in_array($_GET['select'], $allowed_values) {
die('Please select a valid option');
}
如果他们提交的不是您指定的内容,请不要让您的系统继续运行。
理想情况下,不要只是将它们转储到空白页上并显示错误消息,建议您将它们优雅地返回到您的表单并突出显示无效的部分。
总是验证提交的所有内容,对此主题有很多不同的good/bad examples(广泛的问题)。
您当然可以使用JS来实现客户端验证,或者可以直接在HTML中进行某些操作,这对用户来说将是更好的体验,但是操作起来也很容易,所以如果您选择了这条路线,除了验证PHP之外,还应该这样做。