我要来回走动,所以我想我会在这里问。我希望有一种技术适用于所有输入字段(text,select,textarea)。
首先我们使用php脚本处理用户输入。可能存在一些验证错误,因此可能需要使用用户输入的值重新显示表单。 htmlspecialchars($fieldValue, ENT_QUOTES)
在此处不起作用,因为如果存在验证错误并且表单被重新显示,则用户输入的所有引号都将转换为\“。至少在文本区域中。
成功验证表单后,我们需要将输入发送到数据库。列值必须“安全”,因此需要进行一些转换。我知道我可能需要在从数据库读取时应用某种形式的转换,尽管我希望在这个上有错误。
寻找一个不涉及太多代码的好习惯。
===
就像更新一样。在Domino表单中,没有任何类型的转义,也不需要特殊处理。 Notes只是为它自动完成。在使用JPA的Java应用程序中,所有这些“安全”也是自动处理的。我知道php可能没有相应的东西,但这是一个常见的问题,我选择相信我错过了一些非常简单的解决方案。
答案 0 :(得分:1)
只需使用mysql_real_escape_string()
过滤需要进入DB的输入!
答案 1 :(得分:0)
快速修复\"
问题,关闭magic_quotes
,shouldn'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字符和编码出现问题。