【发布时间】:2021-10-07 05:10:30
【问题描述】:
我无法告诉你我在这些愚蠢的错误上浪费了多少小时。
我基本上是在构建一个 URL,例如:https://example.com/?test=' . urlencode('meow+foo@gmail.com');
然后,我从 URL 中显示它,如下所示:echo urldecode($_GET['test']);
然后显示:meow foo@gmail.com。
呃。
如果我改为这样做:echo $_GET['test'];
我得到:meow+foo@gmail.com。
(当然,回显这样的 GET 变量是很疯狂的,所以我当然会在现实中围绕它做htmlspecialchars。但这不是我要在这里提出的重点。)
因此,由于浏览器(或其他东西)显然会自动进行这种“翻译”或“解码”,因此通过删除某些字符(在本例中为“+”(加号))再次执行此操作会导致混乱。这让我相信我根本不应该使用urldecode/rawurldecode。
但是它们为什么存在呢?
【问题讨论】:
-
$_GET上的 PHP 手册声称:The GET variables are passed through urldecode(). -
@PaulT。那么什么时候会想要使用它们呢?
-
我不知道我曾经使用过
rawurldecode,但在应用了编码的第 3 方 API 上使用过urldecode。