【问题标题】:php functions for sanitizing web form data [duplicate]用于清理Web表单数据的php函数[重复]
【发布时间】:2012-10-08 01:28:08
【问题描述】:

可能重复:
Best way to prevent SQL injection in PHP?

我在 php 站点中的 html web 表单从客户端获取数据并将其放入 mysql 数据库。我想知道在将数据存储到 mysql 之前清理数据所需的步骤。

假设需要使用 PHP 执行此清理,然后将其插入 Mysql,您能否告诉我所有需要注意的事项?

作为一种特殊情况,除了一般的清理之外,我想删除所有特殊字符、空格,并将所有字符转换为小写,然后再放入数据库。为此,我需要查看哪些功能?

我对 php 很陌生。

谢谢。

【问题讨论】:

  • 我也无法想象以前没有问过和回答过“额外”的问题。首先使用搜索。

标签: php mysql webforms sanitization


【解决方案1】:

1.mysqli_real_escape_string() 或 mysql_real_escape_string() 转义引号

2.其他表单数据使用php filter_input

$search_html = filter_input(INPUT_GET, 'search', FILTER_SANITIZE_SPECIAL_CHARS);
$search_url = filter_input(INPUT_GET, 'search', FILTER_SANITIZE_ENCODED);

php 手册中还有其他选项,这里是链接

http://php.net/manual/en/function.filter-input.php

http://www.php.net/manual/en/filter.filters.sanitize.php

【讨论】:

    【解决方案2】:

    首先使用mysqli_real_escape_string() 清理输入,这将转义字符串中的引号。

    您可以使用strtolower() 将字符转换为小写。

    使用htmlspeiclachars() 将特殊字符转换为 HTML 实体

    使用正则表达式去除空格preg_replace( '/\s+/', ' ', $whatever );

    如果要删除特殊字符,可以使用preg_replace('#[^\w()/.%\-&]#',"",$whatever); 正则表达式。 (Source)

    其他净化过滤器参考here

    最后但并非最不重要的是,由于您是初学者,我建议您参考documentation

    【讨论】:

    • 我很想为htmlentities() 设置-1,而在大多数情况下htmlspeiclachars 是要走的路..
    • 嗯,答案只是误导并重复常见的误解,因此值得-1,不是针对单个函数调用,而是针对“问题”的整体“方法”。
    • @PeeHaa 可以编辑而不是投反对票吗?
    • @hakre 在哪些方面具有误导性?
    • @Mr.Alien 参数化查询比转义引号更好。
    猜你喜欢
    • 2013-12-08
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    • 1970-01-01
    • 2019-03-24
    • 1970-01-01
    相关资源
    最近更新 更多