我在serialize()
和unserialize()
方面遇到了一些问题。
我正在为Wordpress编写一个函数,该函数实际上是一个设置页面,我试图使用两个输入字段导出和导入设置数组。
代码(和页面)有点长,所以我发布它HERE ON PASTEBIN,这样会更舒服。
我遇到的问题是,wordpress使用设置API将选项(或设置)保存为序列化数组。
我所拥有的功能可以成功显示如下选项:
a:10:{s:24:"brsa_copyright_meta_text";s:0:"";s:25:"brsa_remove_menu_css_list";s:0:"";s:19:"brsa_remove_submenu";s:0:"";s:21:"brsa_remove_menu_list";s:0:"";s:15:"brsa_footer_txt";s:0:"";s:22:"brsa_dash_wdgt_content";s:0:"";s:36:"brsa_add_custom_login_message_string";s:0:"";s:21:"brsa_login_url_string";s:0:"";s:21:"brsa_login_alt_string";s:0:"";s:14:"brsa_login_img";s:0:"";}
没关系。它是序列化的,但是当我尝试将它插入数据库(或通过按下导入按钮在其他字段上显示它)它实际上是escaped
我认为,并且无论如何,它不会插入到数据库序列化,但作为字符串..
a:10:{s:24:\"brsa_copyright_meta_text\";s:0:\"\";s:25:\"brsa_remove_menu_css_list\";s:0:\"\";s:19:\"brsa_remove_submenu\";s:0:\"\";s:21:\"brsa_remove_menu_list\";s:0:\"\";s:15:\"brsa_footer_txt\";s:0:\"\";s:22:\"brsa_dash_wdgt_content\";s:0:\"\";s:36:\"brsa_add_custom_login_message_string\";s:0:\"\";s:21:\"brsa_login_url_string\";s:0:\"\";s:21:\"brsa_login_alt_string\";s:0:\"\";s:14:\"brsa_login_img\";s:0:\"\";}
..使整个代码无法使用。 代码的相对部分是:
$my_options = get_option( 'o99_brsa_settings' );
$currentsettings = "";
if ( isset( $_POST['import'] ) && trim($_POST['exccc']) != "" ) {
$currentsettings = $_POST['exccc'];
update_option( 'o99_brsa_settings', serialize($currentsettings));
} elseif ( isset( $my_options ) && ( $my_options != "" ) ) {
if ($o99_brsa_options['brsa_keep_settings_exp'] !='') {
$currentsettings = $o99_brsa_options['brsa_keep_settings_exp'];
} else {
$currentsettings = serialize( $my_options );
}
}
虽然我确实认为应该看到-- whole code --以了解它应该如何运作..
除了它不起作用的fac之外,我不确定是什么问题,但首先我想知道为什么价值为/escaped/
以及如何预防?
任何其他帮助也将非常感谢..
答案 0 :(得分:0)
您的服务器可能已启用magic_quotes
。请您的管理员禁用它。