什么是在保存到mysql的php脚本中转义引号的最佳方法?

时间:2013-06-23 02:48:08

标签: php mysql forms

我要来回走动,所以我想我会在这里问。我希望有一种技术适用于所有输入字段(text,select,textarea)。

  1. 首先我们使用php脚本处理用户输入。可能存在一些验证错误,因此可能需要使用用户输入的值重新显示表单。 htmlspecialchars($fieldValue, ENT_QUOTES)在此处不起作用,因为如果存在验证错误并且表单被重新显示,则用户输入的所有引号都将转换为\“。至少在文本区域中。

  2. 成功验证表单后,我们需要将输入发送到数据库。列值必须“安全”,因此需要进行一些转换。我知道我可能需要在从数据库读取时应用某种形式的转换,尽管我希望在这个上有错误。

  3. 寻找一个不涉及太多代码的好习惯。

    ===

    就像更新一样。在Domino表单中,没有任何类型的转义,也不需要特殊处理。 Notes只是为它自动完成。在使用JPA的Java应用程序中,所有这些“安全”也是自动处理的。我知道php可能没有相应的东西,但这是一个常见的问题,我选择相信我错过了一些非常简单的解决方案。

3 个答案:

答案 0 :(得分:1)

只需使用mysql_real_escape_string()过滤需要进入DB的输入!

答案 1 :(得分:0)

快速修复\"问题,关闭magic_quotesshouldn't be using anyway

对于您的其他问题,请使用driver that supports prepared statements,如果您正在寻找等效于don't的JPA而不是use an ORM

用于验证表单中的用户输入,use a form library将处理这些平凡的任务。

答案 2 :(得分:0)

您可以使用像Doctrine这样的ORM自动执行大量操作。你真的应该使用PDO进行数据库访问,这将允许你进行“绑定”而不是“转义”。使用转义可能会导致UTF8字符和编码出现问题。