我有两个问题
'
时,这很好。但是,在我允许修改提交内容的形式中,当它被引入时,'
之后的任何内容都会消失。我推断这是因为当我将包含'
的文本内容分配给文本字段时,它会关闭引号。例如,如果我在那里提交Hello,我就是John,它会:<input type=text value='Hello there I'm Jon />
所以你看,I'm
中的撇号关闭了value属性的引用。因此,我能想到的唯一解决方案是逃避撇号,但即使我将mysql_real_escape_string()函数留在内容上(因为它已提交到数据库转义并检索此表单)。 &
或+
时,它会消失。每当我尝试在任何地方打印时都会发生这种情况,无论使用htmlspecialchars()
函数(我在印象中都应该使用HTML格式对这些字符进行编码,例如:&
)。例如,如果有人输入Me & you
,则会显示为Me you
。所以我问:我怎么能解决上面的问题,似乎与特殊字符有关,尽管已经将它们转义(我甚至尝试再次应用转义功能)?如果有任何我应该提供的示例代码,请告诉我,但我已经解释了我对每个输入做了什么。
答案 0 :(得分:2)
当我通过HTML表单(使用POST)提交角色
'
时,这很好。但是,在我允许修改提交内容的形式中,当它被引入时,“消失”后的任何内容。我推断这是因为当我分配包含'到文本字段的文本内容时,它会关闭引号。例如,如果我在那里提交Hello,那么我会做:<input type=text value='Hello there I'm Jon />
所以你看,我的撇号关闭了value属性的引用。因此,我能想到的唯一解决方案是逃避撇号,但即使我将mysql_real_escape_string()
函数留在内容上(因为它已提交到转发并检索此表单的数据库)。
这与提交数据无关。您正尝试在以'
个字符分隔的属性值中使用'
。
使用htmlspecialchars($data, ENT_QUOTES)
同样,当我提交&amp;或者+,它消失了。每当我尝试在任何地方打印它时都会发生这种情况,无论使用htmlspecialchars()函数(我在印象中都应该用HTML格式对这些字符进行编码,例如:&amp;)。举个例子,如果有人进入Me&amp;然后它将显示为“我”。
在编码为application / x-www-form-urlencoded &
的数据中,表示“新密钥开始=值对”,+
表示“空格”。您需要urlencode($data)
。
答案 1 :(得分:2)
首先,它有助于正确包含HTML属性,如下所示:
<input type="text" value="Hello there I'm Jon" />
我使用双引号,请注意该值的尾随引号,而原始单词没有。如果您将值包装在htmlentities()
中,则可以在表单中正确显示/保存"
或任何其他值。
虽然在HTML5中严格要求双引号('
在大多数情况下都可以正常使用),但至少应该鼓励它们。如果您正在使用某些XHTML变体,则需要它们。
答案 2 :(得分:1)
这里做一些懒惰但快速的方法是在发布之前对字段的内容使用urlencode(),在另一边使用urldecode()。
这不是正确的方式,也不是好方法......但是如果你不想编写一些特定的代码来处理这些案例,它就可以了。