【问题标题】:how to properly escape data with javascript for query string for decoding in PHP [duplicate]如何使用javascript正确转义数据以在PHP中解码查询字符串[重复]
【发布时间】:2013-05-13 15:07:20
【问题描述】:

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

我在 JavaScript 中使用encodeURIComponent 对输入字段名称和字段值进行编码。

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

例子:

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

这个 field.name 会以 form_0_text_0 而不是 form.0.text.0 的形式到达我的 PHP 脚本,而输入的文本(例如 this contains a lot of ....)会很好地到达。

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

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

有什么想法吗?

【问题讨论】:

  • 感谢正确的重定向 - 如果我认为我没有足够的搜索,我会删除这个问题,但由于我不知道 PHP 正在这样做,也许其他人会发现这个问题并且被指出正确的答案。如果您不同意,请标记为不相关。

标签: php javascript query-string


【解决方案1】:

这是 PHP “保护你”。如果您尝试传递包含点的 GET 变量,它们将被下划线替换。见Get PHP to stop replacing '.' characters in $_GET or $_POST arrays?

如果您确实必须在名称属性中使用点,则有一种方法可以绕过“保护”:https://stackoverflow.com/a/1939911/2397004

【讨论】:

  • 太棒了 - 我所要做的就是用 $_SERVER['QUERY_STRING'] 替换 php://input,因为我正在使用 HTTP GET 并且我已经准备好了
猜你喜欢
  • 2011-01-06
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多