1

请注意,这是一个 JQuery-Ajax-CodeIgniter 问题。

后期处理中涉及的所有文件都是 UTF8 编码的。在非 Ajax 调用中,我的所有表单都可以完美地使用 UTF8 字符。在 Ajax 调用中,Firebug/Chrome 嗅探器正确显示发布的值。

如果我在 index.php(根文件)中打印 $_POST 数组,则值会正确显示。

CI 正在做的事情是在花括号的位置放置问号,并在第一个重音字符处修剪字符串。

从它的声音来看,iconv 可能会弄乱字符串,所以我尝试删除 XSS,从 CI system/core/Input.php 和 system/core/Utf8.php 中注释 iconv 和 mb_convert_encoding 行,但没有任何乐趣。

在经历了一些痛苦之后,我决定看看 $_REQUEST。OMG,字符串在那里正确显示,所以我使用 $_REQUEST 而不是 $_POST (不是我喜欢它)。

我发现下面的帖子说我们应该使用 $_REQUEST 而不是 $_POST: `$('#form').serialize()` messes up UTF-8 characters,然后指向 PHP urldecode函数。

我不确定问题是否与 urldecode 有关,因为 $_POST 数组在被 CI 处理后会发生变化。

那么,我应该在我的 Ajax 控制器中继续使用 $_REQUEST 还是有更好的解决方案来解决这个问题?

在安全/XSS 方面有什么想法吗?

谢谢!

4

0 回答 0