php - 验证 WordPress 上的 textarea 字段
问题描述
我有一个要验证的文本区域:
<form method="POST">
<textarea id="textarea" name="textarea"></textarea>
</form>
使用 Ajax 发送值:
$.ajax('ajaxurl', {
method: "POST",
data: {'action': 'my_action', 'textarea': $('#textarea').val()},
processData: false,
contentType: false,
});
在functions.php
:
function my_action(){
$textarea = $_POST['textarea'];
if ( !empty( $textarea ) ) {
global $wpdb;
$textarea = sanitize_textarea_field($textarea);
$wpdb->insert( 'data_table', array('textarea' => $textarea), array('%s') );
}
}
add_action( 'wp_ajax_my_action', 'my_action' );
add_action( 'wp_ajax_nopriv_my_action', 'my_action' );
是否sanitize_textarea_field()
足以验证文本区域?还是我做了更多检查?
解决方案
sanitize_textarea_field()
将执行以下操作
- 检查无效的 UTF-8
- 将单个 < 字符转换为实体
- 剥离所有标签
- 删除换行符、制表符和多余的空格
- 带八位字节
虽然从数据的角度来看这应该足够了,但是我建议从安全的角度来看你也应该限制输入的大小。
推荐阅读
- variables - 使用生成字符串的函数覆盖类型为“string”的“defcustom”
- reactjs - 有没有更简单的算法来解决这个表单问题?
- php - WordPress 不断重定向到旧的开发服务器 IP 地址而不是新的开发 IP 地址
- javascript - 浏览器刷新后 Nuxt auth 用户重置
- python - Gattlib 安装有 pip 问题
- php - 如何将sql查询转换为laravel查询
- mongodb - 如何使用 Zabbix 进行 MongoDB 监控
- sequelize.js - sequelize 在 v6.6.5 中没有设置标准主键“id”
- schema.org - 如何覆盖 schema.org 标记中数组中项目的@type?
- c++ - 写入映射结构区域失败