的插入方法$wpdb
已经将数据替换为SQL注入。您应该担心的是数据清理和验证。
对于exmpla:
Sanitization
您在中接受什么类型的数据
$votes
? 整数值?如果是,请确保
$votes
包含整数值。对于exmaple,您可以使用
intval
function 来自PHP。这是消毒。
$votes = intval( $votes );
您在中接受什么类型的数据
$competition
? 任何没有HTML、制表符或换行符的字符串?如果是,请确保
$competition
包含字符串值,剥离HTML标记并删除选项卡和换行符;对于exmaple,您可以使用
sanitize_text_field
function 来自WordPress。这也是消毒。
$competition = sanitize_text_field( $competition );
Data validation
您接受的价值是多少
$votes
? 从0到100,包括两者?如果是,您可以检查
$votes
:
if( $votes >= 0 && $votes <= 100 ) {
// Value is correct
} else {
// Value is not correct. Maybe abort the process?
}
你有有效比赛的名单吗?检查的值
$competition
反对:
$valid_competitions = array( \'competition1\', \'competition2\', \'competition3\' );
if( in_array( $competition, $valid_competitions ) ) {
// Value is correct
} else {
// Value is not correct. Maybe abort the process?
}
对执行相同的过程
$uid
.
一旦您对变量进行了santize和验证,就可以将它们传递给$wpdb->insert
方法(使用第三个参数执行基本清理,如果这足以满足您的情况,则可以避免以前的清理):
$wpdb->insert(
\'votes\',
array(
\'votes\' => $votes,
\'competition\' => $competition,
\'uid\' => $uid
),
array(
\'%d\', // integer data type for $votes
\'%s\', // string data type for $competition
\'%d\', // integer data type for $uid
)
);