只允许在数据库中输入某些字符

Posted

技术标签:

【中文标题】只允许在数据库中输入某些字符【英文标题】:Only allow certain characters to be entered in database 【发布时间】:2017-12-07 19:04:32 【问题描述】:

我正在检查只接受某些类型的字符并忽略一些的答案。

我在堆栈本身中找到了一个链接,here

但是,即使这会阻止在文本框中输入数据,任何对如何检查内容并从客户端删除模式有一点了解的人都将允许它输入所需的任何详细信息并将其发送到数据库。

有什么方法可以防止我的网站出现这种情况吗?我不想要某些字符,如空格、分号等。

html & php 前端 mysql 中的后端

【问题讨论】:

【参考方案1】:

可以在客户端使用pattern 属性来完成,但是HTML5 textarea 元素支持pattern 属性。

另一种方法是使用 javascript(如您所述)

var text = $('textarea').val();
var expres = /[^a-zA-Z0-9\!\@\#\$\%\^\*\|]+/;
if(expres.test(text))       
     //... some action
 

如果你想替换无效字符,你可以使用jQuery函数replace(),它类似于PHP中的preg_replace(),它接受正则表达式。

您也可以在服务器端(在 PHP 中)检查有效性(在将值插入 db 之前)

preg_replace("/[^A-Za-z0-9 ]/", '', $string);

【讨论】:

谢谢,我认为使用 php 更好【参考方案2】:

首先, 您可以为数据库中的每一列定义一个类型,例如,如果您将类型设置为整数 - 您将无法插入其他任何内容。

让我们假设您正在寻找“过滤”或操作数据库中的字符串 - 我会创建一个正则表达式来替换字符串中任何不需要的字符并将其插入数据库。

【讨论】:

以上是关于只允许在数据库中输入某些字符的主要内容,如果未能解决你的问题,请参考以下文章

如何在 swift 2.0 中只允许 UITextfield 中的某些数字集

Swift/iOS8:只允许某些键盘

用于文本框验证的 HTML5 正则表达式模式:仅允许字母、空格和某些字符

[范例] Firemonkey Edit 输入框只允许输入数字 for Android

Objective-C如何限制文本字段在2次输入后只允许特定字符

数据表 - 只允许使用按钮排序