lek*_*eko 6 php wordpress wordpress-theming
有人可以解释何时使用转义函数?
我的目标是确保我的Wordpress主题.我使用了Chris Coyier的空白主题,并添加了代码来制作我想要的网站.我注意到其他主题使用了逃避函数而不是Coyier的空白主题,所以我想知道在哪里插入这些.
在阅读了Codex和谷歌搜索结果并研究了几个主题的代码后,我仍然不清楚何时使用
esc_url()
esc_attr()
esc_html()
Run Code Online (Sandbox Code Playgroud)
我没有看到何时使用这些的模式.例如,在一个主题中,对于home_url('/') - 请注意esc_url用于header.php但不用于searchform.php - 为什么?
header.php文件
<a href=
// NOTICE ESCAPING FUNCTION BELOW
"<?php echo esc_url( home_url( '/' ) ); ?>"
title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a>
Run Code Online (Sandbox Code Playgroud)
searchform.php
<form role="search" method="get" id="searchform" action=
// NO ESCAPING FUNCTION BELOW
"<?php echo home_url( '/' ); ?>"
>
Run Code Online (Sandbox Code Playgroud)
逃逸功能可以防止攻击和怪异的角色.这些函数的一些功能是删除无效字符,删除危险字符,并将字符编码为HTML实体.
问题是不受信任的数据不仅来自用户,而且可能来自您自己的数据库中保存的内容.
作为一般规则,当URL的任何部分不是由Wordpress函数生成时,最好使用转义函数.如果整个URL仅由Wordpress函数生成,则不需要转义函数.
例如,如果要打印URL并添加这样的查询字符串
<?php echo get_permalink() . '?order=time' ?>
Run Code Online (Sandbox Code Playgroud)
你应该养成使用转义函数的习惯,因为你输入了一些实际的URL.
<?php echo esc_url(get_permalink() . '?order=time') ?>
Run Code Online (Sandbox Code Playgroud)
不过,最好像这样使用add_query_string函数
<?php echo add_query_arg('order', 'time', get_permalink()) ?>
Run Code Online (Sandbox Code Playgroud)
在第二个示例中,您不需要转义函数,因为URL完全由Wordpress函数生成.
在您的问题示例中,header.php文件中不需要转义函数.编写该代码的人可能只是习惯这样做,即使不需要也可以放在那里.
开始阅读数据验证的好地方是Wordpress codex:https://codex.wordpress.org/Data_Validation
| 归档时间: |
|
| 查看次数: |
7795 次 |
| 最近记录: |