PHP表单自动转义发布的数据?

PHP表单自动转义发布的数据?,php,forms,Php,Forms,我有一个HTML表单发布到PHP页面 我可以使用PHP上的$\u POST变量读入数据 然而,所有的数据似乎都被转义了 比如说 逗号(,)=%2C 冒号(:)=%3a 斜杠(/)=%2 所以,像一个简单的URL之类的东西可以作为http%3A%2F%2Fexample.com发布 有什么想法吗?这里有一个简单的PHP循环来解码所有的POST变量 foreach($_POST as $key=>$value) { $_POST[$key] = urldecode($value); }

我有一个HTML表单发布到PHP页面

我可以使用PHP上的$\u POST变量读入数据

然而,所有的数据似乎都被转义了

比如说

逗号(,)=%2C 冒号(:)=%3a 斜杠(/)=%2

所以,像一个简单的URL之类的东西可以作为http%3A%2F%2Fexample.com发布


有什么想法吗?

这里有一个简单的PHP循环来解码所有的POST变量

foreach($_POST as $key=>$value) {
    $_POST[$key] = urldecode($value);
}

然后,您可以按照正常方式访问它们,但要正确解码。一、 但是,我会使用不同的数组来存储它们,因为我不想污染超级全局变量(我相信它们应该像PHP一样始终包含准确的数据)。

实际上您需要urldecode.%xx是一种URL编码,而不是html编码。真正的问题是你为什么要得到这些代码。PHP通常在将请求解析为$\u GET和$\u请求变量时为您解码URL。已发布的表单不应使用URL编码。你能给我们看一些生成表单的代码吗?也许出于某种原因,您的表单正在进行编码


请参阅本页上的警告:

这不应该发生,尽管您可以通过手动urldecode()来修复它,但您可能会在其他地方隐藏一个基本的bug,稍后可能会出现

虽然当您使用默认内容类型“application/x-www-form-encoded”发布表单时,表单中的值是URL编码的(%xx),但当PHP在$\u POST[]数组中提供值时,它会为您撤消该值


如果之后仍然收到不需要的%xx序列,则必须有另一层不应该存在的手动URL编码。你需要找到它在哪里。如果它是一个隐藏字段,可能生成它的页面不小心使用urlencode()而不是htmlspecialchars()对其进行了编码,或者其他什么?将一些示例代码放到网上可能有助于我们找到答案。

我就是这么想的,我只是在地址栏中看到了这一点。也许他在一个隐藏字段中回显GET var,然后用编码再次发布?