清理元输入的正确方法

时间:2015-04-20 作者:Derp

我有一个元字段,它在管理面板中显示为:

$field = get_post_meta($postid, \'field_name\', true); ?>
<input type="text" name="field_name" value="<?php echo (!empty($field)) ? $field : \'\'; ?>" />
通常每当我保存这些东西的时候sanitize_text_field() 我觉得这已经足够了,直到今天。。。今天我意识到它不能正确地编码任何html实体,例如引号。例如:假设用户进入我的文本字段

马特说:“喷气燃料不能熔化钢梁…”

可以使用上面的功能对其进行消毒,但只要回显给我得到的用户

马特说

输入如下所示:

<input type="text" name="field_name" value="Matt said " Jet fuel can\'t melt steel beams" />
我可以使用htmlspecialchars() 无论何时保存我的meta,但这都违背了目的。我为什么要用sanitize_text_field() 结束strip_tags( htmlspecialchars() ) ?

1 个回复
SO网友:Nilambar Sharma

您需要在显示数据的同时转义数据。使用esc_attr 在你的情况下。尝试以下操作:

<input type="text" name="field_name" value="<?php echo (!empty($field)) ? esc_attr( $field ) : \'\'; ?>" />
检查此项以获取完整文档-https://codex.wordpress.org/Data_Validation

结束

相关推荐

Comment form validation

如何设置注释字段的验证规则?我更改了评论者姓名/电子邮件/主页onmouseover和onblur的值(我使用它而不是标签-因此如果字段为空,它会显示“您的电子邮件”、“您的主页”等)。问题是,在提交时,它会在主页字段中提交此文本(因为它没有验证,而不像电子邮件字段,如果您输入了除[email protected]).如何验证主页字段?