这codex page 我想这解释得很好。
最重要和最常用的功能可能是esc_attr
. 举个例子:
<a href="<?php print $author_url; ?>" title="<?php print $author_name; ?>">
<?php print $author_name; ?>
</a>
如果
$author_name
包含
"
角色属性关闭,如果该角色后跟
onclick="do_something();"
情况可能会变得更糟:)
正在执行print esc_attr($author_name)
确保对这些字符进行编码,并且浏览器不会执行不应该执行的操作。
有一种情况您不需要它:当您需要一个数字时,在这种情况下,您可以将输入数据转换为整数,例如:
print (int)$_POST[\'some_number\'];
您在此处列出的meta*函数已经负责清理数据库存储的输入,因此您无需担心这一点。
这个wpdb->prepare()
方法需要在您自己执行DB查询时使用。下面是一个示例:
$sql = $wpdb->prepare(\'
UPDATE wp_posts SET post_title = %s WHERE ID = %d\',
$_POST[\'title\'], $_POST[\'id\']);
$wpdb->query($sql);
The
%s
和
%d
关键字将替换为经过清理的$\\u POST值。
我在WP中的许多插件中看到了一个非常常见的错误。组织存储库将向其传递一个已准备好的查询(但准备得不好),如:
$wpdb->prepare(\'UPDATE wp_posts SET post_title = \\\'\'.$_POST[\'title\'].\' WHERE ...
不要这样做:)
此外,在PHP中回显HTML与在HTML的PHP内联中回显HTML时,是否需要进行不同的清理?
上述两种说法都达到了同样的目的。但他们是否需要以不同的方式进行圣诞庆祝?
不