<form id="tellastory" method="post" action="">
<label for="fullname">Full Name </label>
<input id="fullname" name="fullname" type="text" maxlength="255" value=""/>
<label for="title">Title </label>
<input id="title" name="title" type="text" maxlength="255" value=""/>
<label for="title">Message </label>
<textarea id="editor" name="editor" rows="20" cols="50"></textarea>
<input type="hidden" name="form_id" value="123456" />
<input id="saveForm" type="submit" name="submit" value="submit" />
</form>
<?php
$storyteller_user_id = "3"; //your guest user id here
//$stories_category = "3"; //your stories category id here
$key = "storyteller";
if ($_POST[\'form_id\']=="123456") {
$my_post = array();
$my_post[\'post_title\'] =$_POST[\'title\'];
$my_post[\'post_content\'] = $_POST[\'editor\'];
$my_post[\'post_status\'] = \'publish\';
$my_post[\'post_author\'] = $storyteller_user_id;
$my_post[\'post_category\'] = array($stories_category);
$post_Num = wp_insert_post( $my_post );
add_post_meta($post_Num, $key, $_POST[\'fullname\']);
}
?>
如何才能清理来自此代码的接收数据
卫生处理和逃跑总是严重依赖于环境,我不是这一领域的专家,无论如何,我最近也做了一些“研究”,所以我会尝试向你提供一些一般性的指导原则,直到有更具洞察力的人来提供最终的深入答案(我也很想读)
Codex文章Data Validation 是一个很好的开端。我相信esc_html() 是最常用的输出方法。
WordPress 3.1中似乎还有一个新成员加入了WP逃跑家族-esc_textarea().
WordPress一如既往地试图让您的生活更轻松,所以请务必检查现有的特定于上下文的功能,如sanitize_title() 或sanitize_user().
我建议您在wp-includes/formatting.php 了解更多有关各种方法及其构造方式的信息。
最近也有类似的关于wp黑客的讨论-绝对值得一读:
WP-HACKERS: Saving input from untrusted users. 我敢引用Andrew Nacin的观点:
概括如下:应在保存时进行清理,并在显示时进行转义。
所以你想跑步kses, absint, esc_url_raw, sanitize_text_field, 你有什么,保存。然后,使用esc_url, esc_html 随着texturization 或者你需要什么,你有什么,在输出上。可能存在在显示器上运行KSE的用例。我们在某些情况下会这样做。但只要数据安全地输入,就可以安全地输出。(如果不是,那么你就有一个更大的问题。)
还想要更多吗?;)
The Code Cave: WordPress Security – a plugin done right
Smashing Magazine: Keeping Web Users Safe By Sanitizing Input Data
祝你有一个愉快而安全的一天