serialize()和unserialize()混淆和转义

时间:2013-04-08 16:29:00

标签: php wordpress serialization escaping

我在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/ 以及如何预防?

任何其他帮助也将非常感谢..

1 个答案:

答案 0 :(得分:0)

您的服务器可能已启用magic_quotes。请您的管理员禁用它。