我正在保存数据库的选项。 JSON字符串是从ajax调用返回的,我正在像
那样清理它$my_settings = wp_json_encode( sanitize_text_field( wp_unslash( $_POST['data'] ) ) );
当我用update_option
保存时,它会以
"{ \"0\": { \"settings\": { \"default\": \"0\", \"header_main_title\": \"\",...
现在,如果我只这样做
$my_settings = sanitize_text_field( wp_unslash( $_POST['data'] ) );
数据库中的条目将是
{ "0": { "settings": { "default": "0", "header_main_title": "",...
第二个版本仍然可以使用json_decode
进行解码,因为这毕竟是一个JSON字符串,并且没有使用斜线双引号。
困扰我的是:
答案 0 :(得分:1)
由于wpdb
update
方法而非sanitize_option
,因此选项值始终可以保存安全。您可以保存所需的任何数据。请查看update_option
代码:
$update_args = array(
'option_value' => $serialized_value,
);
$result = $wpdb->update( $wpdb->options, $update_args ...
Update
方法使用prepare
,因此它始终是安全的:
return $this->query( $this->prepare( $sql, $values ) );