仅数据列表验证选项[重复]

Posted

技术标签:

【中文标题】仅数据列表验证选项[重复]【英文标题】:data list validate options Only [duplicate] 【发布时间】:2019-11-17 12:39:37 【问题描述】:

我只想接受选择值。但目前如果用户输入例如:“opra”并且它接受该值到我的数据库。这是搜索选项框

<input list="brow">
<data list id="brow">
  <option value="Internet Explorer">
  <option value="Firefox">
  <option value="Chrome">
  <option value="Opera">
  <option value="Safari">
</data list>  

【问题讨论】:

请简述您的问题 使其成为选择而不是数据列表。然后在php中验证该选项是否有效 数据列表将作为推荐选项,但如果您只想选择一些值,请尝试使用选择标签 您应该在将用户输入发送到数据库之前验证无论如何——无论您在表单中提供什么元素。在提交之前或提交后提供客户端验证更精细,服务器端验证更多的是保持数据清洁、稳定和安全的要求。您的选项列表并不长,只需使用&lt;select&gt;。你让这项工作变得比它需要的更难。 【参考方案1】:

当您将输入值发送到服务器时,如果该值不在您显示错误标签的选项中,您可能会有验证逻辑。

【讨论】:

【参考方案2】:

在大多数数据库中,这将使用check 约束来处理:

alter table t check (browser in ( <valid values go here> ) )

不幸的是,mysql 接受检查约束的语法,但实际上并没有实现它们。

这让您有四个选择:

    在 MySQL 8+ 中,您可以使用 with check option 创建视图。这可能是最好的方法。 在参考表中维护可接受值的列表。 使用枚举类型。 使用触发器强制执行该值。

在早期版本中,第二种方法可能是最好的。您可以从browsers 表中获取browser_id,作为您正在做的任何事情的前奏。如果browser_id 不存在,则返回相应的错误。

【讨论】:

以上是关于仅数据列表验证选项[重复]的主要内容,如果未能解决你的问题,请参考以下文章

jQuery Validation - 仅验证来自多个必填字段的 2 个字段 [重复]

用于密码验证的正则表达式,仅特定字符 [重复]

如何验证下拉列表中的“其他”选项?

允许从属(二级)数据验证的例外情况。

验证输入仅为字符串且仅为数字 JAVA [重复]

仅验证从 Azure B2C AD 生成的 JWT 令牌的签名 [重复]