php - 当浏览器显然自动执行时,rawurldecode() 和 urldecode() 有什么意义?

标签 php browser get urldecode

我无法告诉你我在这些愚蠢的错误上浪费了多少时间。

我基本上是在构造一个 URL,例如:https://example.com/?test='。 urlencode('喵+foo@gmail.com');

然后,我从 URL 中显示它,如下所示:echo urldecode($_GET['test']);

然后显示:meow foo@gmail.com

呃。

如果我改为:echo $_GET['test'];

我得到:meow+foo@gmail.com

(自然地,回显这样的 GET 变量是疯狂的,所以我当然会在现实中围绕它做 htmlspecialchars。但这不是我在这里的重点。)

因此,由于浏览器(或其他东西)显然是在自动进行这种“翻译”或“解码”,因此再次执行此操作会通过删除某些字符(在本例中为“+”(加号))而将其弄乱。这让我相信我根本不应该使用 urldecode/rawurldecode

那么它们为什么存在呢?

最佳答案

So when would one ever want to use them

我最近遇到了一个案例,我们将触发器添加到 S3 存储桶中,该存储桶由 Lambda 函数获取并通过 HTTP 请求发送到 API 端点。

如果 S3 上的文件路径是多字,它会用 + 替换空格,此时它会破坏我们的代码,因为从技术上讲路径是不正确的。

一旦你运行它通过 urldecode它成为一个有效的路径,因为根据文档:

Decodes any %## encoding in the given string. Plus symbols ('+') are decoded to a space character.

这将是此功能的有效用例,因为不涉及浏览器。只是后台进程/请求。

关于php - 当浏览器显然自动执行时,rawurldecode() 和 urldecode() 有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68611573/

相关文章:

javascript - 用户登录后如何在 vue js 中存储身份验证 token ?

java - HTTP PUT 请求的格式是什么?

javascript - 通过指定开发者的GET请求获取所有iOS应用及其信息

php - 如何在 PHP 中使用 while 循环按 ID 列出节中的数据?

php - 在 Laravel 中获取每个用户的最新消息(行)

javascript - 通知 onclick - 在新选项卡中打开链接并关注

javascript - Express over Node.js 路由 - 无法获取/

Php Laravel 试图获取非对象的属性

php - 在两个页面请求之间保留 MySQL 事务 (PDO)?

javascript - 如何使用Ctrl+f同时搜索下拉列表和网页内容?