2017-01-26 10 views
0

Я сохраняю параметры в моей базе данных. Строка JSON возвращается из Ajax вызова, и я дезинфицировать его, какСохранение строки в базе данных в WordPress

$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

Если вы используете 'update_option', чтобы сохранить возможность это безопасно в любом случае. –

+0

Это? Из-за 'sanitize_option'? –

ответ

1

значение параметра всегда экономия безопасно благодаря wpdbupdate метод, а не 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)); 
+0

Не смотрел на код достаточно хорошо. Благодаря! –

 Смежные вопросы

  • Нет связанных вопросов^_^