如何正确地转义数据与javascript查询字符串在PHP中解码


how to properly escape data with javascript for query string for decoding in PHP

我试图创建一个查询字符串,它通过GET请求传递所有表单元素和输入的数据到PHP文件。

我在JavaScript中使用encodeURIComponent来编码输入字段名称以及字段值。

我遇到的是,字段值似乎被传递得很好,因为我在$GET中正确地接收它们,但是字段名将有点(.)被下划线()代替。

的例子:

<input type="text" name="form.0.text.0" value="" />

这个field.name将到达我的PHP脚本作为form_0_text_0而不是form.0.text.0,而输入的文本(例如this contains a lot of ....)将到达。

我使用以下代码作为查询字符串生成的一部分:

+ encodeURIComponent(field.name) + "=" + (field.type == "checkbox" ? (field.checked) : encodeURIComponent(field.value))

有什么好主意吗?

这是PHP "保护你"。如果您试图传递包含点的GET变量,它们将被下划线替换。参见Get PHP停止替换'.'字符在$_GET或$_POST数组?

如果你真的必须在你的名字属性中使用点的话,有一种方法可以绕过这个"保护":https://stackoverflow.com/a/1939911/2397004