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

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

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

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

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

html & php 前端 MySQL 中的后端

【问题讨论】:

    标签: php html mysql stored-procedures phpmyadmin


    【解决方案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】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-05-02
      • 2012-04-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-28
      • 1970-01-01
      • 1970-01-01
      • 2010-12-09
      相关资源
      最近更新 更多