How to sanitize user input?

时间:2013-09-16 作者:David Garcia

在提交到数据库之前,清除表单数据的正确方法是什么?我有以下文本输入:

<form method="post" action="options.php">
    <?php wp_nonce_field(\'update-options\'); ?>

<input style="width:100%" type="text" name="data[title]" id="title" value="<?php $title = get_option(\'data_test\'); echo $title[\'title\']; ?>" /></p>

    <input type="hidden" name="action" value="update"/>
    <input type="hidden" name="page_options" value="lu_ban_data"/>
    <input style="float:left;margin-top: 10px; margin-bottom: 10px; vertical-align: middle; clear: both;" class="button-primary" type="submit" value="<?php _e(\'save changes\') ?>" />
</form>
我试过了echo sanitize_text_field($title[\'title\']);, 但它仅在从db请求数据时清理数据,db中的数据仍然包含不需要的字符。这就是为什么我想在提交之前进行清理。

1 个回复
最合适的回答,由SO网友:Jake 整理而成

我不确定这是否有用。正如s\\u ha\\u dum所说,您应该发布如何处理提交的数据并将其发送给db。

但对于初学者,您可以考虑以以下形式转义输出的数据:

<input style="width:100%" type="text" name="data[title]" id="title" value="<?php $title = get_option(\'data_test\'); echo esc_attr($title[\'title\']); ?>" /></p>
使用esc_attr()esc_html() 对于您正在添加到用户提交的页面中的数据,或者您不确定其来源。

esc_attr() 用于输出到html标记属性的内容,以及esc_html() 用于直接输出到页面或标签之间的内容。还有esc_attr_e(), esc_attr__(), esc_html_e, 和esc_html__() 需要翻译的版本。

最后,在转义序列中是esc_sql() 对于要发送到数据库的用户提交的数据。

EDIT:

正如@Milo在评论中指出的那样,esc\\u sql()在这里没有多大用处,因为这些转义函数已经通过sanitize\\u option()函数应用于更新\\u option(),并在放入数据库时准备就绪。所以你可以跳过这个。如果您正在编写自己的MySQL调用来存储数据,那么应该查看$wpdb->准备转义它们。

对于通过内置函数向数据库添加meta\\u数据和选项,我们已经介绍过了。

结束

相关推荐

如何在Contact Form 7-Forms中使用其他快捷码?

我注意到任何不是联系人表单7内置短代码一部分的短代码都不起作用。例如:我试图在contact form 7中的表单元素之间使用手风琴快捷码。但是代码不起作用。如何在不编辑联系人表单7核心文件的情况下解决此问题?