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

时间:2017-07-04 10:40:49

标签: php html mysql stored-procedures phpmyadmin

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

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

但是,即使这会阻止在文本框中输入数据,任何对如何检查内容和从客户端删除模式知之甚少的人都可以输入它想要的任何详细信息并发送到数据库。 / p>

有什么方法可以阻止我的网站吗?我不想要像空格,分号等某些字符。

html&的前端PHP MySQL中的后端

2 个答案:

答案 0 :(得分:1)

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

让我们假设您正在寻找"过滤"或操纵数据库中的字符串 - 我会使用正则表达式替换字符串中的任何不需要的字符并将其插入数据库。

答案 1 :(得分:1)

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

另一种方法是使用JavaScript(如你所提到的)

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

如果要替换无效字符,可以使用与PHP中的replace()类似的jQuery函数preg_replace(),它接受​​常规表达式。

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

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