转义的目的是确保在输出值时,它不能输出任何恶意的内容,或者只会破坏页面的标记。例如,输出变量时,您需要转义某些字符,以便该值不会无意中打开或关闭HTML标记,这可能会破坏页面布局,甚至输出<script></script>
可能运行恶意JavaScript的元素。
WordPress VIP文档对这一概念有很好的概述,并举例说明:https://wpvip.com/documentation/vip-go/validating-sanitizing-and-escaping/
关于您的具体示例:
Must I escape variables, if it is, how can I do it?
例如:
global $redux_demo;
在此代码中:
if ( class_exists( \'Redux\' ) ) {
global $redux_demo;
if ($redux_demo[\'button-set-single-archive-services\'] == 2)
{
get_template_part( \'demo-archive-services\' );
die;```
不需要。并非所有变量都需要转义。变量只需要在输出时转义。
$redux_demo
没有被输出,所以这里没有什么需要转义的。
Is it true escaping?
<?php esc_html_e( \'Our Services\', \'hekim\' )?>```
是的。
_e()
是一个允许
\'Our Services\'
要替换为翻译的字符串。这意味着您不能相信此行的输出总是安全的。因此,它需要逃脱。
esc_html_e()
是一个使用自动转义的函数
esc_html()
, 运行后
_e()
允许翻译文本。
Functions start with the, need escaping or not?
例如:
<?php the_title(); ?>
如果我用以下函数更改这些函数get
, 他们需要逃跑吗?函数启动时的输出有什么不同吗the
和功能启动get
?
通常,内置函数以the_
不需要转义,但函数以get_
do需要转义。例如the_permalink()
使用esc_url()
逃脱get_the_permalink()
在输出之前。
Why this escaped function doesnt seem?
在逃离这个法尔之后,似乎没有。我逃跑的错误是什么?真正的形式是什么?
<li><?php esc_html( \'<a href="#"> HOME </a>\' ); ?>xx</li>
的要点
esc_html()
是为了防止值中的任何HMTL被解释为HTML。本例中没有需要转义的内容。如果链接URL是一个变量,则需要对其进行转义。