PHP urlencode a URL post field



我正在使用curl调用API POST并传递15个post字段,其中一个是实际的wbsite URL。例如

https://www.test.com?URL=https://www.myurl.com;&Name=John

使用 urlencode 转换 URL post 字段中的字符,并且接收 POST 调用的 API 不会将其识别为实际 URL。有没有办法在放置时保持 URL 字符串不变?

如果你使用的是GET查询参数,你需要对值进行编码,然后在后端对其进行解码:

https://www.test.com?URL=https%3A%2F%2Fwww.myurl.com

然后:

urldecode($_GET['url'])

对于POST来说,application/x-www-form-urlencoded也是如此,但对application/json来说并不重要。

另外,请注意,您的URL中有一个额外的;,如果您包含它,它将使其无效。

编辑:

我还要补充一点,一般来说,始终对从查询/表单数据接收的值进行 urldecode 是一种很好的做法。这里的一般想法是,虽然你可能不想要urlencode数据,但这就是Web的构建方式 - 你应该以一种由客户端决定的方式构建代码。这被认为是数据清理中的重要步骤,应始终在验证之前进行。

您可以使用 php 内置方法来解码 url 编码的数据。

$actualUrl = urldecode ($_GET ['url']);

最新更新