【问题标题】:Serialized PHP Object not passing via POST.序列化的 PHP 对象不通过 POST 传递。
【发布时间】:2014-07-30 01:37:37
【问题描述】:
     $citation = new Citation();
                    $citation->user_id  =   $result['pmid'];
                    $citation->pmid      =  $result['volume'];
                    $citation->volume    =  $result['volume'];      
                    $citation->issue     =  $result['issue'];       
                    $citation->year      =  $result['year'];        
                    $citation->month     =  $result['month'];           
                    $citation->pages     =  $result['pages'];           
                    $citation->issn      =  $result['issn'];        
                    $citation->journal       =  $result['journal'];     
                    $citation->journalabbrev =  $result['journalabbrev'];   
                    $citation->title          = $result['title'];

                    $string_data = serialize($citation);

HTML

   <input type="checkbox" name="citation" value="<?php echo $string_data; ?>">

POST 前 $string_data 的输出 =

O:8:"Citation":16:{s:7:"user_id";s:7:"8046837";s:4:"pmid";s:2:"52";s:6: "卷";s:2:"52";s:5:"期";s:1:"6";s:4:"年";s:4:"1994";s:5:"月";s:3:"Jun";s:5:"pages";s:6:"1535-8";s:4:"issn";s:9:"0047-1852";s:7: "journal";s:51:"Nihon rinsho. 日本临床医学杂志";s:13:"journalabbrev";s:13:"Nippon Rinsho";s:5:"title";s:46:"[结节病的支气管镜分类]。";s:8:"摘要";N;s:11:"隶属关系";N;s:7:"作者";N;s:9:"articleid";N;s: 8:"关键词";N;}

and in 可以反序列化....

                    $new = unserialize($string_data);

                    print_r($new);

给....

引用对象([user_id] => 8046837 [pmid] => 52 [volume] => 52 [issue] => 6 [year] => 1994 [month] => Jun [pages] => 1535-8 [issn] => 0047-1852 [journal] => Nihon rinsho. 日本临床医学杂志 [journalabbrev] => Nippon Rinsho [title] => [Bronchoscope classification in sarcoidosis]. [abstract] => [affiliation] => [作者] => [articleid] => [关键字] => )

但是当我使用复选框发布到另一个页面时,然后

    echo $_POST['citation'];

我明白了

数组 ( [0] => O:8: )

我在 Stack 中搜索了解决方案以及 PHP 文档,但均未成功。 POST 操作是否会以某种方式改变序列化数据?

【问题讨论】:

    标签: php object post serialization


    【解决方案1】:

    我认为你应该使用 json_encode 和 json_decode 函数

    【讨论】:

    • 好的,但是它是如何通过 PHP 中的 POST 传递和检索的?我看不到任何类似的例子。感谢您的意见..
    • $param = $_POST['citation'] ; $citation = json_decode($param)
    【解决方案2】:

    问题解决了。

    第一:

          $string_data = serialize($citation);
    
          $string_data = base64_encode($string_data);
    

    然后使用 POST 发送 $string_data

    然后

          $new_object = unserialize(base64_decode($citation));
    

    另一边……

    【讨论】:

    • 我做到了没有基本编码/解码
    猜你喜欢
    • 1970-01-01
    • 2017-10-22
    • 2013-10-13
    • 2015-02-27
    • 2011-11-15
    • 1970-01-01
    • 2015-04-02
    • 1970-01-01
    • 2013-11-21
    相关资源
    最近更新 更多