首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >esc_url,esc_url_raw还是sanitize_url?

esc_url,esc_url_raw还是sanitize_url?
EN

WordPress Development用户
提问于 2023-04-13 16:02:57
回答 1查看 117关注 0票数 0

我知道已经有这里的帖子了,但它的答案仍然让我对这三种方法一无所知。

如果我想生成一个包含URL参数的安全和动态URL,那么标题中提到的方法之一的选择让我有点困惑。其中一项用途是:

  • HTTP重定向,在PHP中执行
  • 页面加载,通过js通过window.location = 触发
  • 锚标记链接,其href值保存转义URL。

现在看来,引擎盖下的esc_url_未加工执行消毒_url,然后在幕后执行esc_url,最后通过db上下文执行应用清洁_url_过滤器

此外,esc_url_rawsanitize_url在文档中具有完全相同的描述,即:

清除用于数据库的URL或重定向使用。

然后,esc博士_url声明,如果上下文是display,就会替换符号,这对我来说对URL来说是不可取的,因为这将给链接中的查询参数带来麻烦。这就是为什么我目前使用esc_url_raw()为上述3种情况生成安全URL的原因。然而,如果我测试:

echo esc_url('https://example.org?my_query=is&so=cool')

我得到了https://example.org?my_query=is&so=cool,所以实际上没有对符号进行编码。那么,这些文档实际上指的是哪个符号呢?我的假设正确吗?对于上述三种情况,esc_url_raw()是避免动态生成带有查询参数的链接的最佳方法吗?

同样让我困惑的是,如果你这样做了:

代码语言:javascript
运行
复制
var_dump(esc_url('https://example.com?test=hello&there=allgood',['https']));
var_dump(sanitize_url('https://example.com?test=hello&there=allgood',['https']));
var_dump(esc_url_raw('https://example.com?test=hello&there=allgood',['https']));

所有这些都给了你:

https://example.com?test=hello&there=allgood

那么,对于上述三种情况,最好的方法是什么呢?

这个问题出现的主要原因是,一些著名的wordpress主题片段使用esc_url()来生成href属性值的链接,而不是esc_url_raw(),所以我想知道原因,在深入挖掘之后,我也了解了sanitize_url()

EN

回答 1

WordPress Development用户

回答已采纳

发布于 2023-04-13 17:07:25

这可能是一个更有用的演示:

代码语言:javascript
运行
复制
票数 2
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/415344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档