【问题标题】:serialize() and unserialize() confusion and escapingserialize() 和 unserialize() 混淆和转义
【发布时间】:2013-04-08 16:28:59
【问题描述】:

我对@9​​87654323@ 和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 -- 以了解它应该如何工作..

除了它不起作用之外,我不太确定问题是什么,但首先我想知道为什么值是/escaped/ 和如何预防?

任何其他帮助也将不胜感激..

【问题讨论】:

  • 您的服务器可能启用了magic_quotes。请您的管理员禁用它。如果您需要magic_quotes,您做错了,这种情况的解决方法是stripslashes 您的输入撤消magic_quotes 转换。
  • 向我们展示update_option 的实现,那么您可能已经逃脱了太多。
  • @Frits van Campen - 但不会stripslashes 也会损害可能带有斜线的内部信息??
  • magic_quotes 开启时不会。这就是重点。当然,在输入时随机调用stripslashes 会破坏您的输入。首先确定你要处理的是什么。
  • @Frits van Campen - update_option 是一个 wordpress 核心功能..我很确定它可以正常工作(至少它对数百万用户有效 :-) - 即使不适合我..)

标签: php wordpress serialization escaping


【解决方案1】:

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

【讨论】:

  • 现在,接下来 - 有没有办法检查 magic_quotes 是否在运行时启用?
猜你喜欢
  • 2012-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-25
  • 2016-07-11
  • 1970-01-01
相关资源
最近更新 更多