在我的清理脚本中,在使用POST请求方法提交此数据之前,我的文本区域输入字段“contact\\u msg”有以下内容:
if($_POST[\'contact_msg\'] != \'\'){
$contact_message = sanitize_textarea_field($_POST[\'contact_msg\']);
if(strlen($contact_message < 15)){
$errors .= \'Please enter more information in your message.\';
$hasError = true;
} elseif {strlen($contact_message > 2000)) {
$errors .= \'Please shorten your message.\';
$hasError = true;
}
}
我有点绊倒了,因为我认为
$_POST[\'contact_msg\']
将被清理-仅变量,
$contact_message
默认情况下,提交时传递的不是什么,因此需要我在提交时传递此输入的键/值对之前做其他事情?换句话说,你实际上是如何消毒的
$_POST[\'contact_msg\']
? 您是否只添加以下内容:
if($_POST[\'contact_msg\'] != \'\'){
$contact_message = sanitize_textarea_field($_POST[\'contact_msg\']);
if(strlen($contact_message < 15)){
$errors .= \'Please enter more information in your message.\';
$hasError = true;
} elseif (strlen($contact_message > 2000)) {
$errors .= \'Please shorten your message.\';
$hasError = true;
} else {
$_POST[\'contact_msg\'] = sanitize_textarea_field($_POST[\'contact_msg\'];
}
}
为了实际清理正在发布的数据?
SO网友:jaswrks
首先检查它是否为空,然后将其类型转换为字符串值作为安全预防措施,因为它总是可以作为数组提交;e、 例如,被攻击者。然后取消闪烁、清理,并通过检查长度和任何其他要验证的内容继续。
if ( ! empty( $_POST[\'contact_msg\'] ) ){
$contact_message = (string) $_POST[\'contact_msg\'];
$contact_message = wp_unslash( $contact_message );
$contact_message = sanitize_textarea_field( $contact_message );
}
Tip: 还请确保使用
Nonce.
这是上面更简洁的变化。
if ( ! empty( $_POST[\'contact_msg\'] ) ){
$contact_message = sanitize_textarea_field( wp_unslash( (string) $_POST[\'contact_msg\'] ) );
}